My Blog is my notepad, I want to mark my work anytime, also i can share my harvest with everyone....

Teracy 's space--->

I love BS Develop ,So i am busying as a bee.Do more,Know more,you will get more.....

博客园 首页 新随笔 联系 订阅 管理

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

posted on 2007-05-11 16:44  Teracy  阅读(184)  评论(1编辑  收藏  举报
One Two Three 向“前”走............
frontpage tracking
Sony Style Coupons