Je tiens à mettre et
d’un (languageList) à l’aide d’un dictionnaire (liste) des
(fr-fr) comme nom de clé et de la langue (anglais) comme le texte à afficher.
Code correspondant :
Comment puis-je définir et
?
Je tiens à mettre et
d’un (languageList) à l’aide d’un dictionnaire (liste) des
(fr-fr) comme nom de clé et de la langue (anglais) comme le texte à afficher.
Code correspondant :
Comment puis-je définir et
?
Lorsqu'un dictionnaire est énuméré, il donnera KeyValuePair<TKey,TValue>
objets... donc vous avez juste besoin de spécifier la "Valeur" et "Clé" pour DataTextField
et DataValueField
, respectivement, pour sélectionner la Valeur/Clé de propriétés.
Merci à Joe commentaire, j'ai relu la question pour obtenir ces dans le bon sens. Normalement, je m'attends à de la "clé" dans le dictionnaire pour la le texte qui s'affiche, et la "valeur" à la valeur par les cheveux. Votre exemple de code utilise dans l'autre sens. À moins que vous vraiment besoin d'eux pour être de cette façon, vous pourriez envisager l'écriture de votre code:
list.Add(cul.DisplayName, cod);
(Et puis en modifiant la liaison à l'utilisation de la "Clé" pour DataTextField
et de la "Valeur" pour DataValueField
, bien sûr.)
En fait, je suggérerais que, comme il semble vraiment vous voulez une liste plutôt qu'un dictionnaire, vous pouvez vouloir reconsidérer l'aide d'un dictionnaire en premier lieu. Vous pouvez simplement utiliser un List<KeyValuePair<string, string>>
:
string[] languageCodsList = service.LanguagesAvailable();
var list = new List<KeyValuePair<string, string>>();
foreach (string cod in languageCodsList)
{
CultureInfo cul = new CultureInfo(cod);
list.Add(new KeyValuePair<string, string>(cul.DisplayName, cod));
}
Vous pouvez également utiliser une liste de plain CultureInfo
valeurs. LINQ fait vraiment facilement:
var cultures = service.LanguagesAvailable()
.Select(language => new CultureInfo(language));
languageList.DataTextField = "DisplayName";
languageList.DataValueField = "Name";
languageList.DataSource = cultures;
languageList.DataBind();
Si vous n'êtes pas à l'aide de LINQ, vous pouvez toujours utiliser une normale boucle foreach:
List<CultureInfo> cultures = new List<CultureInfo>();
foreach (string cod in service.LanguagesAvailable())
{
cultures.Add(new CultureInfo(cod));
}
languageList.DataTextField = "DisplayName";
languageList.DataValueField = "Name";
languageList.DataSource = cultures;
languageList.DataBind();
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.