Saya ingin mengatur DataTextField
dan DataValueField
dari Dropdownlist
(daftar bahasa) menggunakan Kamus (daftar) dari languageCod
(en-gb) sebagai kunci dan nama bahasa (bahasa Inggris) sebagai teks untuk ditampilkan.
Kode yang Relevan:
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();
Bagaimana cara mengatur DataTextField
dan DataValueField
?
c#
dictionary
drop-down-menu
VansFannel
sumber
sumber
Dictionary<TKey, TValue>
, tapi mungkin aList<T>
.Ketika kamus disebutkan, itu akan menghasilkan
KeyValuePair<TKey,TValue>
objek ... jadi Anda hanya perlu menentukan "Nilai" dan "Kunci" untukDataTextField
danDataValueField
masing - masing, untuk memilih properti Nilai / Kunci .Terima kasih atas komentar Joe, saya membaca ulang pertanyaan untuk mendapatkan jawaban yang benar. Biasanya saya mengharapkan "kunci" dalam kamus menjadi teks yang ditampilkan, dan "nilai" menjadi nilai yang diambil. Kode sampel Anda menggunakannya dengan cara lain. Kecuali jika Anda benar-benar membutuhkannya seperti ini, Anda mungkin ingin mempertimbangkan untuk menulis kode Anda sebagai:
(Dan tentu saja, mengubah pengikatan menjadi menggunakan "Kunci"
DataTextField
dan "Nilai" untukDataValueField
.)Sebenarnya, saya menyarankan karena sepertinya Anda benar-benar menginginkan daftar daripada kamus, Anda mungkin ingin mempertimbangkan kembali menggunakan kamus sejak awal. Anda bisa menggunakan
List<KeyValuePair<string, string>>
:Alternatifnya, gunakan daftar
CultureInfo
nilai biasa . LINQ membuatnya sangat mudah:Jika Anda tidak menggunakan LINQ, Anda masih dapat menggunakan foreach loop normal:
sumber
Jika DropDownList dideklarasikan di halaman aspx Anda dan bukan di codebehind, Anda dapat melakukannya seperti ini.
.aspx:
.aspx.cs:
sumber
Cukup gunakan "Kunci" dan "Nilai"
sumber