Bonjour,
j'ai un souci en implémentant un système de colonnes dynamiques, notamment lors de donner le DataSource à la GridControl.
Je travaille avec les outils de Dev Express en C# sous VS2008.
Imaginons que dans un fichier XML j'ai une description de mes colonnes :
Je récupère ces infos et je créé les colonnes dans ma GridView (j'ai mis du code en dur pour mes tests, mais au final j'utiliserai les données du XML) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <Colonnes> <Colonne>une</Colonne> <Colonne>deux</Colonne> <Colonne>trois</Colonne> </Colonnes>
Jusque là, pas de grosse difficulté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 DevExpress.XtraGrid.Columns.GridColumn une = new DevExpress.XtraGrid.Columns.GridColumn(); DevExpress.XtraGrid.Columns.GridColumn deux = new DevExpress.XtraGrid.Columns.GridColumn(); DevExpress.XtraGrid.Columns.GridColumn trois = new DevExpress.XtraGrid.Columns.GridColumn(); une.Caption = "Hello1"; une.FieldName = "hello1"; une.Name = "une"; une.OptionsColumn.AllowEdit = false; une.OptionsColumn.ReadOnly = true; une.Visible = true; une.VisibleIndex = 0; une.Width = 132; deux.Caption = "Hello2"; deux.FieldName = "hello2"; deux.Name = "deux"; deux.OptionsColumn.AllowEdit = false; deux.OptionsColumn.ReadOnly = true; deux.Visible = true; deux.VisibleIndex = 1; deux.Width = 132; trois.Caption = "Hello3"; trois.FieldName = "hello3"; trois.Name = "trois"; trois.OptionsColumn.AllowEdit = false; trois.OptionsColumn.ReadOnly = true; trois.Visible = true; trois.VisibleIndex = 2; trois.Width = 132;
Mais ensuite, je ne sais pas comment donner des infos à afficher...
Ce code :
ne marche que si j'ai une classe Test définie comme plus loin (C-a-d avec des Propriétés portant le même nom que les FieldName de mes colonnes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Test[] array1 = { new Test( "ououo", "erzaezaeza", "uytrytr" ), new Test( "ououo", "erzaezaeza", "uytrytr" ), new Test( "ououo", "erzaezaeza", "uytrytr" ), new Test( "ououo", "erzaezaeza", "uytrytr" ) }; grid.DataSource = array1;
Sinon il ajoute bien les lignes dans ma grille, mais rien ne s'affiche dans les colones.
Cette solution n'est pas envisageable, car je dois pouvoir gérer un nombre infini (théoriquement) de colonnes, dont je ne connais pas le nom à l'avance (dans le XML), donc je ne peux pas écrire la classe Test comme cela.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Test { public Test( string h1, string h2, string h3 ) { hello1 = h1; hello2 = h2; hello3 = h3; } public string hello1{ get; set; } public string hello2{ get; set; } public string hello3{ get; set; } };
Comment peut se résoudre le problème ?
Merci.
Partager