J'ai un objet dictionnaire <string, string>
et j'aimerais le lier à un répéteur. Cependant, je ne sais pas quoi mettre dans le balisage aspx
pour afficher réellement la paire clé-valeur. Aucune erreur n'est générée et je peux le faire fonctionner avec List
. Comment obtenir un dictionnaire à afficher dans un répéteur?
Réponses
Trop de publicités?Un IDictionary<TKey,TValue>
est aussi un ICollection<KeyValuePair<TKey, TValue>>
.
Vous avez besoin de se lier à quelque chose comme (non testé):
((KeyValuePair<string,string>)Container.DataItem).Key
((KeyValuePair<string,string>)Container.DataItem).Value
Notez que l'ordre dans lequel les articles sont retournés est pas défini. Ils peuvent ainsi être retournés dans l'ordre d'insertion pour les petits dictionnaires, mais ce n'est pas garanti. Si vous avez besoin d'un ordre garanti, SortedDictionary<TKey, TValue>
tris par clé.
Ou si vous avez besoin d'un ordre de tri différent (par exemple, en valeur), vous pouvez créer un List<KeyValuePair<string,string>>
de vos paires clé-valeur, puis à les trier, et de se lier à la liste triée.
Réponse: J'ai utilisé ce code dans les balises pour afficher la clé et la valeur individuellement:
<%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, string>)Container.DataItem,"Key") %>
<%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, string>)Container.DataItem,"Value") %>