Saturday, 26 October 2013

Populate DropDownList control with enum ,

DropDownList can also be populated with enum i.e

  protected void Page_Load(object sender, EventArgs e)
            if (!IsPostBack)
                //Assigning values to dropdown form enum as news types
                var hash = Helper.GetEnumForBind(typeof(NewsType));
                hash.Add("0", "--Select Type--");
                NewsType.DataSource = hash;
                NewsType.DataTextField = "value";
                NewsType.DataValueField = "key";

Where NewsType is enum , lets say like this :
 public enum NewsType

And GetEnumForBind function converts enum to hashtable which can be bound to DropDownList,

 public static Hashtable GetEnumForBind(Type enumeration)
            string[] names = Enum.GetNames(enumeration);
            Array values = Enum.GetValues(enumeration);
            Hashtable ht = new Hashtable();
            for (int i = 0; i < names.Length; i++)
                ht.Add(Convert.ToInt32(values.GetValue(i)).ToString(), names[i]);
            return ht;

and finally our dropdownlist is :

    <asp:DropDownList runat="server" ID="NewsType"  AutoPostBack="True" onselectedindexchanged="NewsType_SelectedIndexChanged"> </asp:DropDownList>

and that's all what we need :)