Ajout de colonne dynamiquement dans un Gridview depuis une LinqDataSource
Bonjour à toutes et à tous,
La question est la suivante :
- Comment peut-on, sans les nommer, rajouter une colonne dans un Gridview. Actuellement je marque en dur la valeur String correspondante à ma colonne dans la propriété DataField d'une instance de l'objet BoundField.
Un exemple vous aidera mieux à comprendre mon problème.
J'ai une LinqDataSource comme suit :
Code:
1 2 3 4 5
| LinqDataSource ldsEnvironment = new LinqDataSource();
ldsEnvironment.ID = "LinqDataSource1";
ldsEnvironment.ContextTypeName="Link.DataClasses1DataContext";
ldsEnvironment.TableName = "Environment";
Page.Controls.Add(ldsEnvironment); |
Celle-ci n'a aucune instruction particulière et ramène donc l'intégralité des colonnes de ma Table "Environment".
Pour attacher l'une des colonnes à un Gridview, je procède comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| //Création de la Gridview
Gridview gvw = new Gridview();
gvw.DataSourceID = "LinqDataSource1";
//Création de la colonne
BoundField bfCodeColumn = new BoundField();
bfCodeColumn.DataField = "Code";
//Ajout de la colonne au Gridview
gvw.Columns.Add(bfCodeColumn);
//Ajout du Gridview dans la Page
Page.Controls.Add(gvw); |
On peut voir ici que je suis obligé d'écrire en dur le mot "Code".
J'aimerai ne pas avoir besoin de l'écrire et pouvoir boucler sur la source de donnée ou autre de façon à récupérer le nom des colonnes une part une. Cela me permettrait de contextualiser l'affichage des colonnes dans mon Gridview en fonction des cas, voir mieux, afficher une nouvelle colonne en ajoutant une colonne en base de donnée... sans retoucher au code !
Pour réaliser cela il me manque : la liste des colonnes ramenées (où la trouve t-on ?), le nombre de colonne ramenée pour boucler et/ou une valeur booléenne pouvant indiquer quand tout à été parcouru.
J'ai fouillé dans la LinqDataSource, mais impossible de trouver cette liste. J'imagine que si les données son liée seulement en écrivant "Code", c'est qu'il y a un mécanisme qui vérifie que cette colonne existe bien pour l'ajouter ?
Je n'ai pas trouver de quoi résoudre mon problème avec mes multiples recherches mais probablement que je n'ai pas cherché avec les bon mot-clé (effectivement parler de dynamique est souvent synonyme d'instanciation dans le code Behind).
Merci d'avance pour vos aides, idées, renvoi vers articles, ou solutions.