欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-11 12:16:13
复制代码 代码如下:public class appenum { public enum pointlogtype : int { /// ...
复制代码 代码如下:

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;
}
}