Databases Reference
In-Depth Information
}
return base.FieldValueString;
}
}
protected new void PopulateListControl(ListControl listControl)
{
Type enumType = this.Column.GetEnumType();
Type underlyingType = Enum.GetUnderlyingType(enumType);
IOrderedDictionary enumDictionary = GetEnumDictionary(enumType);
foreach (DictionaryEntry entry in enumDictionary)
{
var enumName = (string)entry.Value;
object enumValue = Convert.ChangeType(entry.Key, underlyingType);
listControl.Items.Add(new ListItem(enumName, enumValue.ToString()));
}
}
private static IOrderedDictionary GetEnumDictionary(Type enumType)
{
IOrderedDictionary enumDictionary;
if (!enumCache.TryGetValue(enumType, out enumDictionary))
{
enumDictionary = BuildEnumDictionary(enumType);
enumCache.TryAdd(enumType, enumDictionary);
}
return enumDictionary;
}
private static IOrderedDictionary BuildEnumDictionary(Type enumType)
{
var dictionary = new OrderedDictionary();
FieldInfo[] enumFields = enumType.GetFields(
BindingFlags.Static | BindingFlags.GetField | BindingFlags.Public);
foreach (FieldInfo enumField in enumFields)
{
object enumValue = enumField.GetValue(null);
DisplayAttribute annotation = enumField
.GetCustomAttributes(typeof(DisplayAttribute), false)
.OfType<DisplayAttribute>().FirstOrDefault();
string enumName = annotation != null
? annotation.GetName()
: enumValue.ToString();
dictionary.Add(enumValue, enumName);
Search WWH ::




Custom Search