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