【IT168 技术文档】做了一个项目,其中用了很多枚举。在页面上单独写下拉列表,这样觉得很不统一。所以google了一下枚举绑定下拉列表的方法,发现都不是通用的方法。于是修改了网上的代码写成了一个通用的枚举绑定列表方法。下面贴代码。
/**//// <summary>
/// 用枚举绑定列表
/// </summary>
/// <param name="col">控件名</param>
/// <param name="eumeName">枚举名</param>
public static void BindData(Control col, string enumName)
{
System.Reflection.Assembly asm = Assembly.Load("App_Code"); //枚举是在App_Code里
Type type = asm.GetType(enumName);
FieldInfo[] fields = type.GetFields();
int count = fields.Length;
if (col is DropDownList)
{
DropDownList ddl = (DropDownList)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
else if (col is HtmlSelect)
{
HtmlSelect ddl = (HtmlSelect)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
else if (col is CheckBoxList)
{
CheckBoxList ddl = (CheckBoxList)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
else if (col is RadioButtonList)
{
RadioButtonList ddl = (RadioButtonList)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
else if (col is ListBox)
{
ListBox ddl = (ListBox)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
}
/// 用枚举绑定列表
/// </summary>
/// <param name="col">控件名</param>
/// <param name="eumeName">枚举名</param>
public static void BindData(Control col, string enumName)
{
System.Reflection.Assembly asm = Assembly.Load("App_Code"); //枚举是在App_Code里
Type type = asm.GetType(enumName);
FieldInfo[] fields = type.GetFields();
int count = fields.Length;
if (col is DropDownList)
{
DropDownList ddl = (DropDownList)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
else if (col is HtmlSelect)
{
HtmlSelect ddl = (HtmlSelect)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
else if (col is CheckBoxList)
{
CheckBoxList ddl = (CheckBoxList)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
else if (col is RadioButtonList)
{
RadioButtonList ddl = (RadioButtonList)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
else if (col is ListBox)
{
ListBox ddl = (ListBox)col;
ddl.Items.Clear();
for (int i = 1; i < count; i++)
{
FieldInfo field = fields[i];
ListItem item = new ListItem(field.Name);
ddl.Items.Add(item);
}
}
}
如里枚举是写在项目里面的话 上面 System.Reflection.Assembly asm = Assembly.Load("App_Code");改写成 System.Reflection.Assembly asm = Assembly.Load("成程集");
调用时 为 PublicFun.BindData("控件ID","命名空间.枚举");
顺便贴一下其它的类型的数据的绑定方法 如下....
从TABLE表绑定下拉例表的通用方法
/**//// <summary>
/// </summary>
/// <param name="col">控件名</param>
/// <param name="dt">内存表</param>
/// <param name="Name">显示字段</param>
/// <param name="value">值字段</param>
public static void BindData(Control col, DataTable dt, string Name, string Value)
{
if (col is DropDownList)
{
DropDownList ddl = (DropDownList)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
else if (col is CheckBoxList)
{
CheckBoxList ddl = (CheckBoxList)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
else if (col is RadioButtonList)
{
RadioButtonList ddl = (RadioButtonList)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
else if (col is ListBox)
{
ListBox ddl = (ListBox)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
else if (col is HtmlSelect)
{
HtmlSelect ddl = (HtmlSelect)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
}
/// </summary>
/// <param name="col">控件名</param>
/// <param name="dt">内存表</param>
/// <param name="Name">显示字段</param>
/// <param name="value">值字段</param>
public static void BindData(Control col, DataTable dt, string Name, string Value)
{
if (col is DropDownList)
{
DropDownList ddl = (DropDownList)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
else if (col is CheckBoxList)
{
CheckBoxList ddl = (CheckBoxList)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
else if (col is RadioButtonList)
{
RadioButtonList ddl = (RadioButtonList)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
else if (col is ListBox)
{
ListBox ddl = (ListBox)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
else if (col is HtmlSelect)
{
HtmlSelect ddl = (HtmlSelect)col;
ddl.Items.Clear();
ddl.DataSource = dt;
ddl.DataTextField = Name;
ddl.DataValueField = Value;
ddl.DataBind();
}
}
哈希表绑定下拉例表的通用方法
/**//// <summary>
/// 绑定下拉列表
/// </summary>
/// <param name="col">控件名</param>
/// <param name="ht">哈希表</param>
public static void BindData(Control col, Hashtable ht, string name, string value)
{
if (col is HtmlSelect)
{
HtmlSelect ddl = (HtmlSelect)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
else if (col is CheckBoxList)
{
CheckBoxList ddl = (CheckBoxList)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
else if (col is RadioButtonList)
{
RadioButtonList ddl = (RadioButtonList)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
else if (col is ListBox)
{
ListBox ddl = (ListBox)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
else if (col is DropDownList)
{
DropDownList ddl = (DropDownList)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
}
/// 绑定下拉列表
/// </summary>
/// <param name="col">控件名</param>
/// <param name="ht">哈希表</param>
public static void BindData(Control col, Hashtable ht, string name, string value)
{
if (col is HtmlSelect)
{
HtmlSelect ddl = (HtmlSelect)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
else if (col is CheckBoxList)
{
CheckBoxList ddl = (CheckBoxList)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
else if (col is RadioButtonList)
{
RadioButtonList ddl = (RadioButtonList)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
else if (col is ListBox)
{
ListBox ddl = (ListBox)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
else if (col is DropDownList)
{
DropDownList ddl = (DropDownList)col;
ddl.Items.Clear();
ddl.DataSource = ht;
ddl.DataTextField = name;
ddl.DataValueField = value;
ddl.DataBind();
}
}