Sunday, April 5, 2009

Binding an Enum to a DropDownList in C#

I find it useful to keep common dropdown lists such as "categories" in an enum. Here is a useful function to bind that enum type to a DataTable in C#.


public static DataTable BindToEnum(Type enumType)
{
String[] names = System.Enum.GetNames(enumType);
Array values = System.Enum.GetValues(enumType);

DataTable dt = new DataTable();
dt.Columns.Add("key", typeof(string));
dt.Columns.Add("value", typeof(int));

int i = 0;
while (i < names.Length)
{
DataRow dr = dt.NewRow();
dr["key"] = names[i];
dr["value"] = (int)values.GetValue(i);
dt.Rows.Add(dr);
i++;
}

return dt;
}



Here is how you would use this function.

DataTable lo_dt = BindToEnum(typeof(Categories));
ddlCategory.DataSource = lo_dt;
ddlCategory.DataTextField = "key";
ddlCategory.DataValueField = "value";
ddlCategory.DataBind();

No comments: