Bind dictionary to repeater Bind dictionary to repeater asp.net asp.net

Bind dictionary to repeater


An IDictionary<TKey,TValue> is also an ICollection<KeyValuePair<TKey, TValue>>.

You need to bind to something like (untested):

((KeyValuePair<string,string>)Container.DataItem).Key((KeyValuePair<string,string>)Container.DataItem).Value

Note that the order in which the items are returned is undefined. They may well be returned in the insertion order for small dictionaries, but this is not guaranteed. If you need a guaranteed order, SortedDictionary<TKey, TValue> sorts by key.

Or if you need a different sort order (e.g. by value), you could create a List<KeyValuePair<string,string>> of your key-value pairs, then sort it, and bind to the sorted list.

Answer:I used this code in the markup to display the key and value individually:

<%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, string>)Container.DataItem,"Key") %><%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, string>)Container.DataItem,"Value") %>


Bind to the values collection of the dictionary.

myRepeater.DataSource = myDictionary.ValuesmyRepeater.DataBind()