Sometime when we have Enum , we want to use it /bind it on the list as well with a better description/ word. With this method you can bind enum to a list which display its description but store its value as well.This is very useful function.
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Reflection;
using System.ComponentModel;
public class Enums
{
#region helpers
public static string GetEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fi.GetCustomAttributes
(typeof(DescriptionAttribute), false);
return (attributes.Length > 0) ? attributes[0].Description : value.ToString();
}
public static T Parse(string input)
{
return (T)Enum.Parse(typeof(T), input);
}
#endregion
#region enums
public enum ResultsType
{
[Description("Featured Products")]
FeaturedProducts,
[Description("New Products")]
NewStock,
CategoryResults,
[Description("Specials")]
Specials,
Brand,
Row1,
Row2,
Row3,
[Description("This Weeks Specials")]
ThisWeeksSpecials,
[Description("Top 10 Best Sellers")]
Top10BestSellers,
[Description("Special Offers")]
SpecialOffers,
[Description("Buy 1 Get 1 Free")]
Buy1Get1Free,
[Description("Half Price Bargains")]
HalfPriceBargains,
[Description("Top Sellers")]
TopSellers,
[Description("Summer Specials")]
SummerSpecials,
[Description("CUSTOMERS WHO BOUGHT THIS ALSO BOUGHT")]
AlsoBought,
[Description("Related Products")]
Upsell
}
public enum ReportType
{
[Description("Monthly Sales Report")]
MonthySalesReport = 1,
[Description("Dispatched Orders Report")]
DispatchedOrdersReport = 2,
[Description("Order Report")]
OrderReport = 3
}
#endregion
}
This is how you bind it
Private Sub PopulateReportType()
ddlReportType.Items.Clear()
ddlReportType.Items.Add(New ListItem(Enums.GetEnumDescription(Enums.ReportType.MonthySalesReport), Convert.ToInt32(Enums.ReportType.MonthySalesReport)))
ddlReportType.Items.Add(New ListItem(Enums.GetEnumDescription(Enums.ReportType.DispatchedOrdersReport), Convert.ToInt32(Enums.ReportType.DispatchedOrdersReport)))
ddlReportType.Items.Add(New ListItem(Enums.GetEnumDescription(Enums.ReportType.OrderReport), Convert.ToInt32(Enums.ReportType.OrderReport)))
End Sub