Tengo un objeto de diccionario <string, string>
y me gustaría vincularlo a un repetidor. Sin embargo, no estoy seguro de qué poner en el marcado aspx
para mostrar realmente el par clave-valor. No hay errores lanzados y puedo hacer que funcione con un List
. ¿Cómo puedo obtener un diccionario para mostrar en un repetidor?Enlazar diccionario al repetidor
Respuesta
Un IDictionary<TKey,TValue>
es también un ICollection<KeyValuePair<TKey, TValue>>
.
que necesita vincular a algo así como (no probado):
((KeyValuePair<string,string>)Container.DataItem).Key
((KeyValuePair<string,string>)Container.DataItem).Value
Tenga en cuenta que el orden en que se devuelven los artículos no está definido. Se pueden devolver en el orden de inserción para diccionarios pequeños, pero esto no está garantizado. Si necesita una orden garantizada, SortedDictionary<TKey, TValue>
ordena por clave.
O si necesita un orden de clasificación diferente (por ejemplo, por valor), puede crear un List<KeyValuePair<string,string>>
de sus pares clave-valor, luego ordenarlo y enlazar a la lista ordenada.
respuesta: que utiliza este código en el marcado para mostrar la clave y el valor individual:
<%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, string>)Container.DataItem,"Key") %>
<%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, string>)Container.DataItem,"Value") %>
Enlace a la colección de valores del diccionario.
myRepeater.DataSource = myDictionary.Values
myRepeater.DataBind()
Gracias. Me gustaría mostrar las claves y los valores, así que acabo de usar 'myDictionary'. En el marcado, utilicé '<% # Container.DataItem.ToString()%>'.Esto funciona, pero muestra tanto la clave como el valor como un "elemento". ¿Hay alguna forma de obtener la 'clave' y el 'valor' individualmente, para que puedan formatearse por separado? – XSL
Sí. Los objetos en un diccionario son KeyValuePairs, por lo que puede convertir DataItem como Joe muestra en su respuesta. –
<%# Eval("key")%>
trabajó para mí.
Escriba una propiedad en su código subyacente del tipo de una entrada en su diccionario encuadernado. Digamos, por ejemplo, que estoy vinculando un Dictionary<Person, int>
a mi Repetidor. Me gustaría escribir (en C#) una propiedad como esta en mi código subyacente:
protected KeyValuePair<Person, int> Item
{
get { return (KeyValuePair<Person, int>)this.GetDataItem(); }
}
Entonces, en mi opinión, puedo usar segmentos de código como esto:
<span><%# this.Item.Key.FirstName %></span>
<span><%# this.Item.Key.LastName %></span>
<span><%# this.Item.Value %></span>
Esto hace que para las marcas mucho más limpia . Y aunque preferiría nombres menos genéricos para los valores a los que se hace referencia, sé que Item.Key
es Person
y Item.Value
es int
y están fuertemente tipados como tales.
Puedes (leer: debería), por supuesto, renombrar Item
a algo más simbólico de una entrada en tu diccionario. Solo eso ayudará a reducir cualquier ambigüedad en el nombramiento en mi uso de ejemplo.
Ciertamente no hay nada que le impida la definición de una propiedad adicional, dicen así:
protected Person CurrentPerson
{
get { return ((KeyValuePair<Person, int>)this.GetDataItem()).Key; }
}
Y usarlo en su margen de beneficio de esta manera:
<span><%# this.CurrentPerson.FirstName %></span>
... ninguno de los cuales evita También puede acceder a la entrada del diccionario correspondiente .Value
.
- 1. ¿Enlazar un diccionario al DataGridView en C#?
- 2. Lista de enlace (de cadena) al repetidor
- 3. Estoy tratando de aprender cómo enlazar una colección LINQ IEnumerable a un repetidor
- 4. ¿Enlazar una lista desplegable en mvc3 a un diccionario?
- 5. WPF ¿Enlazar elementos a un diccionario por clave?
- 6. Repetidor anidado
- 7. Enum al diccionario
- 8. Convertir ConfigParser.items ('') al diccionario
- 9. Cómo vincular el diccionario al ListBox en winforms
- 10. Enlazar onScrolling listener al android ListView
- 11. extraño problema al enlazar una lista dinámica
- 12. Enlazar objeto JSON al elemento HTML
- 13. ¿Hay un C# equivalente al repetidor de salida STL?
- 14. ¿Cómo proporcionar 'datos' al control de usuario dentro del repetidor?
- 15. Paginación en el repetidor
- 16. Renderizar repetidor vacío
- 17. diccionario de Python referencia al elemento vecino diccionario
- 18. ¿Es posible pasar un valor al método Select de un repetidor?
- 19. Repetidor y agregar columnas al encabezado y al elemento plantilla en la página carga
- 20. Enlazar la clave y el valor de un diccionario en un cuadro de lista con wpf
- 21. Enlazar textblock con el valor del diccionario para la clave en XAML?
- 22. Agregar valores al diccionario en Python
- 23. ¿Cómo agregar pares clave, valor al diccionario?
- 24. ¿Alternativa al diccionario con claves enum?
- 25. Excepción al agregar la entrada del diccionario
- 26. Acceda al diccionario de Android para autocompletar
- 27. Diferentes formas de agregar al diccionario
- 28. Ayuda Recolección de Linqifying al Diccionario
- 29. pase el diccionario al controlador asp.net mvc
- 30. Orientación horizontal en el control del repetidor
¿Hay alguna manera de devolver los artículos en cierto orden? En mi lista (muy breve) de 4 elementos, se devuelven en el orden en que se colocaron. – XSL
Eso parece una gran sobrecarga sin razón en .net ..... – Spacemonkey