Det jag vill göra borde vara bland det mest elementära man kan tänka sig. Jag vill presentera editerbar data i tabellform. Sedan vill jag att värdena i tabellen (med eventuella ändringar under runtime) ska hamna i en tvådimentionell matris. Hej Peter Härligt Björne! Hej Peter Hallå Björne,matris -> tabell -> matris
Jag har försökt att åstadkomma detta m.h.a. DataGrid och ListArrayer, men det verkar onödigt svårt. Jag skulle helst vilja undvika att använda en databas.
Har ni något tips på hur jag lyckas med detta?Sv: matris -> tabell -> matris
Det här är antagligen inte alls vad du vill ha =), men för att fortsätta i samma anda som den förra tråden:
ArrayList list = new ArrayList();
list.Add( new Item(1,2,3,4,5) );
list.Add( new Item(2,3,4,5,6) );
list.Add( new Item(3,4,5,6,7) );
list.Add( new Item(4,5,6,7,8) );
dataGrid1.DataSource = list;
public class Item {
private int[] values;
public int Value1 { get { return values[0]; } set { values[0] = value; } }
public int Value2 { get { return values[1]; } set { values[1] = value; } }
public int Value3 { get { return values[2]; } set { values[2] = value; } }
public int Value4 { get { return values[3]; } set { values[3] = value; } }
public int Value5 { get { return values[4]; } set { values[4] = value; } }
public Item(params int[] values) {
if ( values.Length != 5 ) throw new Exception();
this.values = values;
}
}
När man sedan ändrar i DataGrid:en, så ändras faktiskt orginal-objekten också, men detta tyvärr bara någorlunda bra ifall du vet hur många kolumner du vill ha.
// MvH Björne
Sv:matris -> tabell -> matris
Det var precis vad jag önskade mig.
Jag testade lite och märkte att det är svårt att få kolumnerna att rada upp sig i någon viss ordning, typ: Value1, Value2, Value3... Har du någon lösning på det?
Hälsningar
PeterSv: matris -> tabell -> matris
Ifall du vill styra kolumnernas placering och utseende så behöver du först skapa en TableStyle med det utseendet du vill ha.
Detta gör du enklast med klick-klick-metoden ifall du använder Visual Studio.
Gå till propertyn "TableStyles" på DataGrid:en och klicka på "..."-knappen, och välj "Add".
Nu har du en TableStyle; editera den genom att ändra properties och lägga till kolumner under GridColumnStyles.
Sen måste du berätta för din TableStyle att den skall användas för din ArrayList (i vanliga fall så berättar man vilken tabell i DataSet:et som den är kopplad till), och det gör du genom att skriva in "ArrayList" (utan sitationstecken) i propertyn "MappingName"
Oj, va mycke rörig text jag skrev :-P, säg till ifall du stöter på patrull.
// MvH Björne
PS. Bra länk som beskriver DataGridTableStyles http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsdatagridtablestyleclasstopic.asp
PS2: Glöm förresten inte att sätta din förra tråd som "Löst/Klar"Sv:matris -> tabell -> matris
Det funkade bra! Men, man behöver fylla i MappingName även i varje DataGridTextBoxColumn. Det tog ett tag innan jag fattade det.
Bara för att vara utförlig: i propertyn MappingName i DataGridTextBoxColumn:erna fyller man (i detta fall) i respektive kolumnnamn så som man angivit dom i ArrayListen. Alltså, som MappingName i DataGridTextBoxColumn:en som visar value1 kolumnen anger man "value1".
Tack än en gång för hjälpen!
/Peter