Я хочу , чтобы установить DataTextField
и DataValueField
из Dropdownlist
(languageList) с использованием словаря (список) languageCod
(ан-гб) в качестве ключа и названия языка (английского) в качестве текста на дисплее.
Соответствующий код:
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();
Как я могу установить DataTextField
и DataValueField
?
c#
dictionary
drop-down-menu
VansFannel
источник
источник
Dictionary<TKey, TValue>
, но, возможно, aList<T>
.Когда словарь пронумерован, он выдаст
KeyValuePair<TKey,TValue>
объекты ... поэтому вам просто нужно указать «Значение» и «Ключ» дляDataTextField
и,DataValueField
соответственно, для выбора свойств « Значение / Ключ» .Благодаря комментарию Джо, я перечитал вопрос, чтобы все исправить. Обычно я ожидаю, что «ключом» в словаре будет отображаемый текст, а «значением» - полученное значение. Однако в вашем примере кода они используются наоборот. Если вам действительно не нужно, чтобы они были такими, вы можете написать свой код как:
(А затем изменив привязку, чтобы использовать "Ключ" для
DataTextField
DataValueField
, конечно, и «Значение» .)На самом деле, я бы посоветовал, поскольку кажется, что вам действительно нужен список, а не словарь, вы можете в первую очередь пересмотреть использование словаря. Вы можете просто использовать
List<KeyValuePair<string, string>>
:В качестве альтернативы используйте список простых
CultureInfo
значений. LINQ делает это очень просто:Если вы не используете LINQ, вы все равно можете использовать обычный цикл foreach:
источник
Если DropDownList объявлен на странице aspx, а не в выделенном коде, вы можете сделать это следующим образом.
.aspx:
.aspx.cs:
источник
Просто используйте "Ключ" и "Значение"
источник