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

ASP.NET
FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用方法
.NET 常用功能和代码小结
在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出
asp.net IList查询数据后格式化数据再绑定控件
asp.net sql存储过程
asp.net 简单实现禁用或启用页面中的某一类型的控件
asp.net(c#)获取内容第一张图片地址的函数
The remote procedure call failed and did not execute的解决办法
ASP.NET 在线文件管理
asp.net 读取并修改config文件实现代码
ASP.NET Cookie 操作实现
asp.net Silverlight中的模式窗体
Silverlight中动态获取Web Service地址
asp.net Silverlight应用程序中获取载体aspx页面参数
asp.net 水晶报表隔行换色实现方法
asp.net 获取Gridview隐藏列的值
手动把asp.net的类生成dll文件的方法
asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页
动态指定任意类型的ObjectDataSource对象的查询参数
asp.net Md5的用法小结

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 119 ::
收藏到网摘: 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;
}
}