通常,我们在开发时会遇到许多枚举类型值,需要存储到数据库,并且在Grid中呈现。比如我们平时定义常用到的枚举:public enum State
{
     [Description("已过账")]
     Yes = 1,
     [Description("未过账")]
     No = 0,
     [Description("全部")]
     All = 2
}当某数据表字段需使用State枚举,那么我们该怎样方式来从数据库存取该字段呢?怎样展示在Grid之中或ComboBox中? 如何从Grid或ComboBox中修改后再存入数据库?谢谢!

解决方案 »

  1.   

    需要用反射读取Attribute获取你的描述了。
    不过更简单的是,直接写
    public enum State
    {
         已过账 = 1,
         未过账 = 0,
         全部 = 2
    }
    这样只要ToString就可以了。
      

  2.   

    数据库用int型保存,读写的时候,强制类型转换就可以,
      

  3.   

    保存string和int都可以。
    用int强制转换就行。
    用string可以用Enum.Parse解析。
      

  4.   

    不知道你是winform还是asp.net.
    但是Column都可以用Dropdownlist的。
    asp.net使用Template
    winform可以使用类似下面的方法:
    comboBox1.DataSource = Enum.GetValues(typeof(MyEnum));
    MyEnum value = (MyEnum)comboBox1.SelectedValue;
    DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
    col.Name = "My Enum Column";
    col.DataSource = Enum.GetValues(typeof(MyEnum));
    col.ValueType = typeof(MyEnum);
    dataGridView1.Columns.Add(col);代码来自:
    http://stackoverflow.com/questions/56443/create-drop-down-list-options-from-enum-in-a-datagridview