2010-05-06 5 views
1

Dans ASP.NET, lier un DataGrid à une liste d'objets est super facile.Lier DataGrid au dictionnaire dans ASP.NET

Je me retrouve avec une ligne pour chaque objet de la liste, et toute cellule d'une ligne donnée est liée à une propriété de l'objet correspondant. Toutefois, supposons que l'une des propriétés de mon objet est un dictionnaire, et que chacun d'entre eux soit supposé contenir une clé spécifique. Est-il possible de lier un de mes DataGridColumns à cette clé de dictionnaire?

Merci.

Répondre

0

Je ne suis pas familier avec les travaux des liaisons DataGrid mais la liaison en général peut être faite sur n'importe quelle propriété publique. Essayez la liaison à Key et Value sur le Dictionary

1

Si vous ajoutez un gestionnaire pour DataGrid.ItemDataBound, vous pouvez définir explicitement une valeur de colonne de votre dictionnaire. L'exemple le plus simple:

protected void OnItemDataBound(object sender, DataGridItemEventArgs e) 
{ 
    myclass mine = (myclass) e.Item.DataItem; 

    int cellindex = 5; 
    e.Item.Cells[cellindex].Text = mine.mydict["thekey"]; 
} 
0

Une autre option consiste à ajouter une propriété à votre classe qui renvoie la valeur de cette clé spécifique.

public string TheKey 
{   
    get { return MyDictionary["thekey"]; } 
} 

(Les puristes là-bas pourraient ne pas aimer l'idée d'ajouter une propriété à votre objet pour cette raison, mais il fait une solution simple.)

+0

C'est agréablement simple, mais si je don Ne sais pas "la clé" jusqu'à l'exécution? – mcoolbeth