当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net 枚举文件里面的数字绑定到DropDownList里面去

ASP.NET
赫赫大名的A*寻路算法(vb.net版本)
asp.net(c#)下Jmai去说明 使用与下载
[原创]完美解决Could not load file or assembly ''AjaxPro.2'' or one of its dependencies. 拒绝访问。
asp.net下gridview 批量删除的实现方法
用CSS实现图片倾斜 只支持IE
.net get set用法小结
vs 不显示行号的操作方法
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)
ASP.Net不执行问题一解
asp.net 无限分类
让VS2008对JQuery语法的智能感知更完美一点
扩展方法ToJSON() and ParseJSON()
asp.net下PageMethods使用技巧
Linq to SQL Delete时遇到问题的解决方法
实现ASP.NET多文件上传程序代码
ASP.NET AJAX 1.0 RC开发10分钟图解
asp.net get set用法
ASP.NET下使用WScript.Shell执行命令
asp.net2.0实现邮件发送(测试成功)
Asp.net 无限级分类实例代码

ASP.NET 中的 asp.net 枚举文件里面的数字绑定到DropDownList里面去


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 162 ::
收藏到网摘: n/a

将枚举文件里面的数字绑定到DropDownList里面去的实现方法,大家可以借鉴下。
复制代码 代码如下:

public class AppEnum
{
public enum PointLogType : int
{
/// <summary>
/// Email确认
/// </summary>
[Description("Email确认")]
Recruit = 1, //新客户激活+
/// <summary>
/// 老客户回馈
/// </summary>
[Description("老客户回馈")]
Veteran = 2, //老客户购物历史回复
/// <summary>
/// 生成订单
/// </summary>
[Description("生成订单")]
CreateOrder = 3, //下订单-
/// <summary>
/// 作废订单
/// </summary>
[Description("作废订单")]
AbandonSO = 5, //作废订单
/// <summary>
/// 作废订单取消
/// </summary>
[Description("作废订单取消")]
CancelAbandonSO = 6, //审核作废取消-
/// <summary>
/// 退货
/// </summary>
[Description("退货")]
ReturnProduct = 7, //退货-
/// <summary>
/// 取消退货
/// </summary>
[Description("取消退货")]
CancelReturn = 8,
/// <summary>
/// 取消出库
/// </summary>
[Description("取消出库")]
CancelOutstock = 9, //取消出货
/// <summary>
/// 积分转移
/// </summary>
[Description("积分转移")]
TransferPoint = 10, //积分转移
/// <summary>
/// 购物得分
/// </summary>
[Description("购物得分")]
AddPointLater = 11, //滞后加分
/// <summary>
/// 订单修改
/// </summary>
[Description("订单修改")]
UpdateSO = 12, //修改SaleOrder
/// <summary>
/// 批发扣除
/// </summary>
[Description("批发扣除")]
WholeSale = 13, //批发减分-, 好象没有使用。
/// <summary>
/// 买卡
/// </summary>
[Description("买卡")]
InfoProduct = 14, //买卡减分-
/// <summary>
/// 其他
/// </summary>
[Description("其他")]
BizRequest = 15, //Request
/// <summary>
/// 商品评论送积分
/// </summary>
[Description("商品评论送积分")]
Remark = 16, //Remark
/// <summary>
/// 注册送积分
/// </summary>
[Description("注册送积分")]
NewRegister = 17, //注册送积分
/// <summary>
/// DIY活动积分增减
/// </summary>
[Description("DIY活动积分增减")]
DIY = 18, //DIY活动积分增减, 成都DIY系统,没有用起来。
/// <summary>
/// 系统转移积分
/// </summary>
[Description("系统转移积分")]
SysTransferPoint = 19, //系统帐号neweggcs转移积分给客户
/// <summary>
/// 系统帐号增加积分
/// </summary>
[Description("系统帐号增加积分")]
AddPointToSysAccounts = 20, //财务给系统帐号增加积分
/// <summary>
/// 参加竞猜
/// </summary>
[Description("参加竞猜")]
BetReductPoint = 21, //下注使用积分
/// <summary>
/// 竞猜所得
/// </summary>
[Description("竞猜所得")]
BetAddPoint = 22, //开奖得积分
/// <summary>
/// 新用户第一次购物赠送积分
/// </summary>
[Description("新用户第一次购物赠送积分")]
NewCustomerFirstBuy = 23, //新注册用户,第一次购物送积分
/// <summary>
/// 自动提升精华赠送积分
/// </summary>
[Description("自动提升精华赠送积分")]
SetScoreAuto = 24, //自动提升精华赠送积分
/// <summary>
/// 市场促销活动增送积分
/// </summary>
[Description("市场促销活动增送积分")]
MKTCampaign = 25,
/// <summary>
/// 到期回收积分
/// </summary>
[Description("到期回收积分")]
DisusePoint = -1
}
}

上面是一个枚举列表,怎么去读取呢?用一个DDR来绑定呢?
复制代码 代码如下:

ddlType.DisplayMember = "Value";
ddlType.ValueMember = "Key";
ddlType.DataSource = CommonFunctions.GetEnumItems(typeof(AppEnum.PointLogType), false);
ddlType.SelectedValue = 25; // 默认值

下面是CommonFunctions里面的GetEnumItems方法:
复制代码 代码如下:

/// <summary>
/// 获得枚举类型所包含的全部项的列表。
/// </summary>
/// <param name="enumType">枚举的类型</param>
/// <param name="withAll">是否包含"All"</param>
/// <returns></returns>
public static List<EnumItem> GetEnumItems(Type enumType, bool withAll)
{
List<EnumItem> list = new List<EnumItem>();
if (enumType.IsEnum != true)
{
// 不是枚举类型
throw new InvalidOperationException();
}
// 包含 All 选项
if (withAll == true)
list.Add(new EnumItem(AppConst.IntNull, "All"));
// 获得特性Description的类型信息
Type typeDescription = typeof(DescriptionAttribute);
// 获得枚举的字段信息(因为枚举的值实际上是一个static的字段的值)
System.Reflection.FieldInfo[] fields = enumType.GetFields();
// 检索所有字段
foreach (FieldInfo field in fields)
{
// 过滤掉一个不是枚举值的,记录的是枚举的源类型
if (field.FieldType.IsEnum == false)
continue;
// 通过字段的名字得到枚举的值
int value = (int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null);
string text = string.Empty;
// 获得这个字段的所有自定义特性,这里只查找Description特性
object[] arr = field.GetCustomAttributes(typeDescription, true);
if (arr.Length > 0)
{
// 因为Description自定义特性不允许重复,所以只取第一个
DescriptionAttribute aa = (DescriptionAttribute)arr[0];
// 获得特性的描述值
text = aa.Description;
}
else
{
// 如果没有特性描述,那么就显示英文的字段名
text = field.Name;
}
list.Add(new EnumItem(value, text));
}
return list;
}
public class EnumItem
{
private object m_key;
private object m_value;
public object Key
{
get { return m_key; }
set { m_key = value; }
}
public object Value
{
get { return m_value; }
set { m_value = value; }
}
public EnumItem(object _key, object _value)
{
m_key = _key;
m_value = _value;
}
}