枚举字典时,它将产生KeyValuePair<TKey,TValue>
对象...因此,您只需分别为DataTextField
和指定“值”和“键” DataValueField
,以选择“ 值 / 键”属性。
感谢乔的评论,我重新阅读了问题,以使这些正确的方法正确无误。通常,我希望字典中的“键”是显示的文本,而“值”是获取的值。您的示例代码以相反的方式使用它们。除非您确实需要这种方式,否则您可能需要考虑将代码编写为:
list.Add(cul.DisplayName, cod);
(当然,然后将绑定更改为使用“ Key” DataTextField
和“ Value”作为DataValueField
。)
实际上,我建议您似乎确实确实希望使用列表而不是字典,所以您可能首先需要重新考虑使用字典。您可以使用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));
}
或者,使用纯CultureInfo
值列表。LINQ使这变得非常容易:
var cultures = service.LanguagesAvailable()
.Select(language => new CultureInfo(language));
languageList.DataTextField = "DisplayName";
languageList.DataValueField = "Name";
languageList.DataSource = cultures;
languageList.DataBind();
如果您不使用LINQ,仍然可以使用普通的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();