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

ASP.NET
如果操作EXCEL提示没有权限?
不让别人保存你的网页
从C#转到VB .net
创建虚拟目录的常用属性
visual studio 2005又一新增功能
Com与.Net互操作(二次业务开发及插件开发总结)
Wap页面使用asp.net中移动控件List分页(原创)
关于如何操作其他窗体的控件或变量的方法!
C#版MultiSelected DataGrid
使用非托管代码直接修改字符串
如何让一个函数返回多个值(C#)
(原创)C#编写的windows计算器----源代码
(原创)C#获取本地计算机名,IP,MAC地址
用C#读取sina天气预报到wap页面(一)(原创)
窗体问题--拖动无标题栏的窗体
写在VB.NET公共论坛的开篇语!
在VB6中动态创建使用ADO控件访问数据库
使用Visual Basic 6实现真正实用的多线程处理
设计模式之Facade:家庭篇
如何设置tabcontrol控件的tabPage的text内容显示成竖着的字体

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


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