Bu eski ileti dizisini açtığım için üzgünüm.
Bu örnekteki bir açılır liste metin alanı aracılığıyla yalnızca açıklama değil, kullanıcıya anlamlı ve yerelleştirilmiş değerler görüntüleyebildiğinden, numaralandırmayı yerelleştirmek için aşağıdaki yolu izlerim.
İlk olarak, global bir kaynaklar dosyasından yerelleştirilmiş dizeler almak için OwToStringByCulture adlı basit bir yöntem oluşturdum, bu örnekte App_GlobalResources klasöründeki BiBongNet.resx. Bu kaynak dosyasının içinde, tüm dizelerin enum değerleriyle aynı olduğundan emin olun (ReallyNice, SortOfNice, NotNice). Bu yöntemde, genellikle kaynak dosyasının adı olan: resourceClassName parametresini geçiyorum.
Ardından, OwFillDataWithEnum adlı bir açılır listeyi veri kaynağı olarak enum ile doldurmak için statik bir yöntem oluşturuyorum. Bu yöntem daha sonra herhangi bir numaralandırma ile kullanılabilir.
Daha sonra DropDownList1 adlı bir açılır listeye sahip sayfada, aşağı açılır listeye enumu doldurmak için Page_Load'da aşağıdaki basit bir kod satırını ayarladım.
BiBongNet.OwFillDataWithEnum<HowNice>(DropDownList1, "BiBongNet");
Bu kadar. Sanırım bunun gibi bazı basit yöntemlerle, herhangi bir liste denetimini herhangi bir enum ile, sadece açıklayıcı değerler olarak değil, görüntülenecek yerelleştirilmiş metinle doldurabilirsiniz. Tüm bu yöntemleri daha iyi kullanım için uzatma yöntemleri olarak yapabilirsiniz.
Umarım bu yardımcı olur. Paylaşmak için paylaşın!
Yöntemler şunlardır:
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);
}
}