40 votes

Lier le dictionnaire au répéteur

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?

46voto

Joe Points 60749

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") %>

32voto

Arun Krish Points 169

<%# Eval("key")%> travaillé pour moi.

11voto

Jason Berkan Points 4606

Lier à la collection de valeurs du dictionnaire.

 myRepeater.DataSource = myDictionary.Values
myRepeater.DataBind()
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X