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

ASP.NET
C# Quoted-Printable编码、解码
asp.net Google的translate工具翻译 API
.NET读取所有目录下文件正则匹配文本电子邮件
asp.net 半角全角转化工具
AjaxControlToolKit 显示浏览者本地语言的方法
asp.net HTML文件上传标签
ASP.NET 绑定DataSet中的多个表
ASP.NET 重定向的几种方法小结
Asp.Net 重定向必须要知道的一些资料
ASP.NET 导出到Excel时保留换行的代码
Asp.Net Cache缓存使用代码
document.getElementsByName和document.getElementById 在IE与FF中不同实现
GridView单元格合并
asp.net 大文件上传控件
asp.net 日期函数 某月的第一天和最后一天的日期
asp.net 时间类 一周的周一和周末的日期
C# javaScript函数的相互调用
asp.net membership 密码重设
"虚拟路径"..."映射到另一个应用程序,这是不允许的!
如何传值在2个页面之间 要求不刷新父页面,并且不能用Querystring传值

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


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