इस पुराने सूत्र को पाने के लिए क्षमा करें।
मैं एनम को स्थानीय बनाने के लिए निम्न तरीके से जाऊंगा, क्योंकि यह उपयोगकर्ता के लिए सार्थक और स्थानीयकृत मान प्रदर्शित कर सकता है, न कि केवल वर्णन, इस उदाहरण में एक ड्रॉपडाउन टेक्स्ट फ़ील्ड के माध्यम से।
सबसे पहले, मैं एक वैश्विक विधि फ़ाइल से स्थानीयकृत तार प्राप्त करने के लिए OwToStringByCulture नामक एक सरल विधि बनाता हूं, इस उदाहरण में यह App_GlobalResources फ़ोल्डर में BiBongNet.resx है। इस संसाधन फ़ाइल के अंदर, सुनिश्चित करें कि आपके पास एनम (रियलीनेस, सॉर्टऑनइस, नोटनिस) के मान के समान ही हैं। इस पद्धति में, मैं पैरामीटर में गुजरता हूं: resourceClassName जो आमतौर पर संसाधन फ़ाइल का नाम है।
अगला, मैं अपने डेटा स्रोत के रूप में एनम के साथ एक ड्रॉपडेलिस्ट को भरने के लिए एक स्थिर विधि बनाता हूं, जिसे ओवफिल्डवाइटविथेनम कहा जाता है। इस विधि का उपयोग बाद में किसी भी एनम के साथ किया जा सकता है।
फिर DropDownList1 नामक ड्रॉपडाउनलिस्ट के साथ पृष्ठ में, मैंने ड्रॉपडाउनलिस्ट में एनम को भरने के लिए कोड की केवल एक सरल रेखा के बाद Page_Load में सेट किया।
BiBongNet.OwFillDataWithEnum<HowNice>(DropDownList1, "BiBongNet");
बस। मुझे लगता है कि इन जैसे कुछ सरल तरीकों के साथ, आप किसी भी एनम के साथ किसी भी सूची नियंत्रण को भर सकते हैं, न केवल वर्णनात्मक मूल्यों के साथ, बल्कि प्रदर्शित करने के लिए स्थानीयकृत पाठ भी। आप इन सभी तरीकों को बेहतर उपयोग के लिए विस्तार विधियों के रूप में बना सकते हैं।
उममीद है कि इससे मदद मिलेगी। साझा करने के लिए साझा करें!
ये तरीके हैं:
public class BiBongNet
{
enum HowNice
{
ReallyNice,
SortOfNice,
NotNice
}
/// <summary>
/// This method is for filling a listcontrol,
/// such as dropdownlist, listbox...
/// with an enum as the datasource.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="ctrl"></param>
/// <param name="resourceClassName"></param>
public static void OwFillDataWithEnum<T>(ListControl ctrl, string resourceClassName)
{
var owType = typeof(T);
var values = Enum.GetValues(owType);
for (var i = 0; i < values.Length; i++)
{
//Localize this for displaying listcontrol's text field.
var text = OwToStringByCulture(resourceClassName, Enum.Parse(owType, values.GetValue(i).ToString()).ToString());
//This is for listcontrol's value field
var key = (Enum.Parse(owType, values.GetValue(i).ToString()));
//add values of enum to listcontrol.
ctrl.Items.Add(new ListItem(text, key.ToString()));
}
}
/// <summary>
/// Get localized strings.
/// </summary>
/// <param name="resourceClassName"></param>
/// <param name="resourceKey"></param>
/// <returns></returns>
public static string OwToStringByCulture(string resourceClassName, string resourceKey)
{
return (string)HttpContext.GetGlobalResourceObject(resourceClassName, resourceKey);
}
}