जब एक शब्दकोश प्रगणित है, यह निकलेगा KeyValuePair<TKey,TValue>वस्तुओं ... इसलिए तुम सिर्फ "मान" और के लिए "कुंजी" निर्दिष्ट करने की आवश्यकता DataTextFieldहै और DataValueFieldचयन करने के लिए क्रमश: मूल्य / कुंजी गुण।
जो की टिप्पणी के लिए धन्यवाद, मैं इन सवालों को सही तरीके से प्राप्त करने के लिए फिर से लिखता हूं। आम तौर पर मैं शब्दकोश में प्रदर्शित होने वाले पाठ में "कुंजी" की अपेक्षा करता हूं और प्रदर्शित मूल्य "मूल्य" होता है। आपका नमूना कोड उन्हें दूसरे तरीके के दौर का उपयोग करता है। जब तक आपको वास्तव में इस तरह से उनकी आवश्यकता नहीं है, तब तक आप अपना कोड लिखने पर विचार कर सकते हैं:
list.Add(cul.DisplayName, cod);
(और फिर निश्चित रूप से "कुंजी" के लिए DataTextFieldऔर "मान" का उपयोग करने के लिए बाध्यकारी बदल रहा है 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 का उपयोग नहीं कर रहे हैं, तो आप अभी भी एक सामान्य फ़ॉरेस्ट लूप का उपयोग कर सकते हैं:
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();