Je veux définir DataTextField
et DataValueField
d'une Dropdownlist
(languageList) en utilisant un dictionnaire (liste) de languageCod
(en-gb) comme clé et un nom de langue (anglais) comme texte à afficher.
Code pertinent:
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();
Comment puis-je définir DataTextField
et DataValueField
?
c#
dictionary
drop-down-menu
VansFannel
la source
la source
Dictionary<TKey, TValue>
, mais peut-être unList<T>
.Lorsqu'un dictionnaire est énuméré, il produira des
KeyValuePair<TKey,TValue>
objets ... il vous suffit donc de spécifier "Valeur" et "Clé" pourDataTextField
etDataValueField
respectivement, pour sélectionner les propriétés Valeur / Clé .Grâce au commentaire de Joe, j'ai relu la question pour trouver le bon chemin. Normalement, je m'attendrais à ce que la "clé" dans le dictionnaire soit le texte affiché et la "valeur" soit la valeur extraite. Cependant, votre exemple de code les utilise dans l'autre sens. À moins que vous n'en ayez vraiment besoin, vous voudrez peut-être envisager d'écrire votre code comme suit:
(Et puis en changeant la liaison pour utiliser "Key" pour
DataTextField
et "Value" pourDataValueField
, bien sûr.)En fait, je suggérerais que, comme il semble que vous voulez vraiment une liste plutôt qu'un dictionnaire, vous voudrez peut-être reconsidérer l'utilisation d'un dictionnaire en premier lieu. Vous pouvez simplement utiliser un
List<KeyValuePair<string, string>>
:Vous pouvez également utiliser une liste de
CultureInfo
valeurs simples . LINQ rend cela très simple:Si vous n'utilisez pas LINQ, vous pouvez toujours utiliser une boucle foreach normale:
la source
Si DropDownList est déclaré dans votre page aspx et non dans le codebehind, vous pouvez le faire comme ceci.
.aspx:
.aspx.cs:
la source
Utilisez simplement "Clé" et "Valeur"
la source