Quiero establecer DataTextField
y DataValueField
de un Dropdownlist
(languageList) usando un Diccionario (lista) de languageCod
(en-gb) como clave y el nombre del idioma (inglés) como texto para mostrar.
Código relevante:
string[] languageCodsList= service.LanguagesAvailable();
Dictionary<string, string> list =
new Dictionary<string, string>(languageCodsList.Length);
foreach (string cod in languageCodsList)
{
CultureInfo cul = new CultureInfo(cod);
list.Add(cod, cul.DisplayName);
}
languageList.DataSource = list;
languageList.DataBind();
¿Cómo puedo configurar DataTextField
y DataValueField
?
c#
dictionary
drop-down-menu
VansFannel
fuente
fuente
Dictionary<TKey, TValue>
, pero tal vez aList<T>
.Cuando se enumera un diccionario, producirá
KeyValuePair<TKey,TValue>
objetos ... por lo que solo necesita especificar "Valor" y "Clave" paraDataTextField
yDataValueField
, respectivamente, para seleccionar las propiedades Valor / Clave .Gracias al comentario de Joe, releí la pregunta para resolverlas correctamente. Normalmente, esperaría que la "clave" en el diccionario sea el texto que se muestra y el "valor" sea el valor obtenido. Sin embargo, su código de muestra los usa al revés. A menos que realmente los necesite de esta manera, es posible que desee considerar escribir su código como:
(Y luego cambiar el enlace para usar "Clave" para
DataTextField
y "Valor" paraDataValueField
, por supuesto).De hecho, sugiero que, como parece que realmente desea una lista en lugar de un diccionario, es posible que desee reconsiderar el uso de un diccionario en primer lugar. Podrías usar un
List<KeyValuePair<string, string>>
:Alternativamente, use una lista de
CultureInfo
valores simples . LINQ lo hace realmente fácil:Si no está usando LINQ, aún puede usar un bucle foreach normal:
fuente
Si DropDownList se declara en su página aspx y no en el código subyacente, puede hacerlo así.
.aspx:
.aspx.cs:
fuente
Simplemente use "Clave" y "Valor"
fuente