当前位置: 移动技术网 > IT编程>开发语言>.net > asp.net 枚举文件里面的数字绑定到DropDownList里面去

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

2017年12月12日  | 移动技术网IT编程  | 我要评论
复制代码 代码如下:public class appenum { public enum pointlogtype : int { /// <summary>
复制代码 代码如下:

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网