2009-03-18 5 views
1

J'ai un Datagrid avec 3 DropDownLists dedans. Bien qu'il s'agisse d'un DataGrid, il n'aura réellement que deux lignes. Je remplis le BoundColumns en utilisant un DataTable dans mon code.ASP.NET DataGrid - DropDownListes dans des lignes séparées?

Normalement, ce n'est pas un problème pour installer et créer les deux lignes, maintenez les deux rangées de valeurs et récupérez-les plus tard. Mais comme il se trouve, je dois avoir des listes différentes dans chacune de mes lignes

Par exemple:

Première rangée: --- 3 DropDownLists auront chacune quatre options: pommes, oranges, les pommes et les oranges , Ni

deuxième rangée: --- 3 DropDownLists auront chacun quatre options: raisins, cerises, raisins et cerises, ni

Je me demande quelle est la façon la plus indolore pour y parvenir. Je pense qu'une solution doit faire avec DataSource, et les propriétés DataTextField et/ou DataValueField de DropDownList. Mais si je mets une fonction dans DataSource je ne suis pas sûr de savoir comment lui passer l'index de ligne pour qu'il sache quelle liste retourner. Utiliser ItemTypes (Item, AlternatingItem) peut également contenir une solution, mais comment seraient-ils mieux utilisés?

Répondre

1

Généralement, lorsque vous avez besoin d'un comportement différent sur des lignes différentes, le meilleur chemin à parcourir est l'événement RowDataBound. Cet événement vous permettra d'inspecter DataItem de la ligne pour lier conditionnellement les contrôles dans les colonnes Template.

1

Vous devez vérifier l'événement événement RowdataBound et à l'intérieur, cochez la liste déroulante ou vous pouvez utiliser la balise AlternatingItem dans votre code source et dans ce cas, vous avez deux lignes répétées avec la grille et définir le #Eval de chaque liste déroulante à c'est les données appropriées que vous voulez de la source de données ou donnez leurs articles leurs valeurs si les articles sont statiques

2

Pour ajouter à la réponse de Ken Browning (si je l'ai compris correctement).

Que diriez-vous de créer un nouveau contrôle, héritant de Datagrid. Au sein de ce contrôle, une liste générique public Dropdowns:

public List<DropDownList> FruitLists 
{ 
    get;set; 
} 

Si vous ajoutez le contrôle à une cellule en cas RowDataBound comme Ken a suggéré, ajouter le DropDownList à la liste, et vous serez en mesure de itérer à travers eux après la publication.

J'espère que cela aide!

Questions connexes