dropdownlist绑定枚举值
类别:编程学习 浏览量:589
时间:2014-6-8 dropdownlist绑定枚举值
dropdownlist绑定枚举值一、简单的方法
1、枚举定义
public enum EnumActivityType
{
Task = 1,
Fax = 2,
Phone = 3,
Email = 4,
Reminder = 5,
Appointment = 6,
Expiration = 7,
Inquiry = 8
}
2、将枚举转换成ArrayList
public static IList ListTypeForEnum()
{
ArrayList list = new ArrayList();
foreach (int i in Enum.GetValues(typeof(EnumActivityType)))
{
ListItem listitem = new ListItem(Enum.GetName(typeof(EnumActivityType), i), i.ToString());
list.Add(listitem);
}
return list;
}
3、绑定dropdownlist
private void ListType()
{
drpStatus.Items.Clear();
drpStatus.DataSource = ListTypeForEnum();
drpStatus.DataValueField = "value";
drpStatus.DataTextField = "text";
drpStatus.DataBind();
}
二、反射 + 特性 的方式实现
1、枚举
/// <summary>
/// 紧急程度
/// </summary>
public enum eOA_EmergencyLevel
{
[Description("平件")]
PinJian= 1,
[Description("急件")]
JiJian = 2
}
2、枚举扩展方法
///<summary>
/// 枚举辅助类
///</summary>
public static class EnumHelper
{
/// <summary>
/// 获得枚举类型数据项(不包括空项)
/// </summary>
/// <param name="enumType">枚举类型</param>
/// <returns></returns>
public static IList<object> GetItems(this Type enumType)
{
if (!enumType.IsEnum)
throw new InvalidOperationException();
IList<object> list = new List<object>();
// 获取Description特性
Type typeDescription = typeof(DescriptionAttribute);
// 获取枚举字段
FieldInfo[] fields = enumType.GetFields();
foreach (FieldInfo field in fields)
{
if (!field.FieldType.IsEnum)
continue;
// 获取枚举值
int value = (int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null);
// 不包括空项
if (value > 0)
{
string text = string.Empty;
object[] array = field.GetCustomAttributes(typeDescription, false);
if (array.Length > 0) text = ((DescriptionAttribute)array[0]).Description;
else text = field.Name; //没有描述,直接取值
//添加到列表
list.Add(new { Value = value, Text = text });
}
}
return list;
}
}
3、绑定dropdownlist
ddlSubject.DataSource = typeof(Subject).GetItems();
ddlSubject.DataTextField = "Text";
ddlSubject.DataValueField = "Value";
ddlSubject.DataBind();
标签:枚举
您可能感兴趣
热门推荐
- 访问云服务器磁盘文件路径(云服务器的磁盘要怎么选择?)
- css3设置过渡效果(CSS3 media queries + jQuery实现响应式导航)
- dedecms怎么更换模板(DEDECMS解析模板之灵活应用视图类)
- php启用curl(php使用curl伪造浏览器访问操作示例)
- mysql是自动commit吗(详解MySQL与Spring的自动提交autocommit)
- navicat连接报错10038(解决Navicat for Mysql连接报错1251的问题连接失败)
- centos安装mysql8.0教程(Centos7 安装 Mysql8教程)
- laravel的验证规则(解决在Laravel 中处理OPTIONS请求的问题)
- 面试时如何回答为什么要离职的问题
- css怎样设置文字不换行(css是如何实现在页面文字不换行、自动换行、强制换行的方法)