zoukankan      html  css  js  c++  java
  • 绑定枚举类型(反射)

    1、方法:

        public static void ItemListBind<T>(CheckBoxList CBTarget) where T : struct, IConvertible
        {
            if (!typeof(T).IsEnum) throw new ArgumentException("T must be an enumerated type");

            //绑定数据
            foreach (int myCode in Enum.GetValues(typeof(T)))
            {
                string myName = Enum.GetName(typeof(T), myCode);
                string myValue = myCode.ToString();
                ListItem myLi = new ListItem(myName, myValue);
                CBTarget.Items.Add(myLi);
            }
        }


    2、类:

    public static class EnumManager<TEnum>
    {
        private static DataTable GetDataTable()
        {
            Type enumType = typeof(TEnum);  // 获取类型对象
            FieldInfo[] enumFields = enumType.GetFields();


            DataTable table = new DataTable();
            table.Columns.Add("Name", Type.GetType("System.String"));
            table.Columns.Add("Value", Type.GetType("System.Int32"));
            //遍历集合
            foreach (FieldInfo field in enumFields)
            {
                if (!field.IsSpecialName)
                {
                    DataRow row = table.NewRow();
                    row[0] = field.Name;
                    row[1] = Convert.ToInt32(field.GetRawConstantValue());
                    //row[1] = (int)Enum.Parse(enumType, field.Name); 也可以这样


                    table.Rows.Add(row);
                }
            }
            return table;
        }


        public static void SetListControl(ListControl list)
        {
            list.DataSource = GetDataTable();
            list.DataTextField = "Name";
            list.DataValueField = "Value";
            list.DataBind();
        }

    }

    用例:

    enum StarList
    {
        星级 = 0,
        星1 = 1,
        星2 = 2,
        星3 = 3,
        星4 = 4,
        星5 = 5
    }

    EnumManager<FeeList>.SetListControl((ListControl)ddl);

    转载请注明出处:http://blog.csdn.net/dasihg/article/details/6775450

  • 相关阅读:
    交叉编译OpenCV的教程——基于aarch64-linux-gnu的交叉编译器
    Day01:我的Python学习之路
    将中文库导入到ARM板子中以解决中文显示乱码的教程
    Linux环境下挂载SD卡的教程
    Ubuntu下压缩与解压各种文件的命令
    Ubuntu14.04环境下Qt5.5以上版本无法输入中文的解决教程
    编程之美:队列中的最大最小值
    leetcode:Compare Version Numbers
    leetcode:Search for a Range
    csapp:无符号数可能造成的程序bug
  • 原文地址:https://www.cnblogs.com/dashi/p/4034803.html
Copyright © 2011-2022 走看看