যখন একটি অভিধান গণনা করা হয়, এটি 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মানগুলির একটি তালিকা ব্যবহার করুন । লিনকিউ এটি সত্যই সহজ করে তোলে:
var cultures = service.LanguagesAvailable()
.Select(language => new CultureInfo(language));
languageList.DataTextField = "DisplayName";
languageList.DataValueField = "Name";
languageList.DataSource = cultures;
languageList.DataBind();
আপনি যদি লিনকিউ ব্যবহার না করে থাকেন তবে আপনি এখনও সাধারণ ফোরচ লুপ ব্যবহার করতে পারেন:
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();