首页 文章

从DataTable和枚举填充DataGridViewComboBoxColumn

提问于
浏览
1

我正在尝试使用DataTable中的值填充DataGridView . DataGridView中的一个列应该列出一个ComboBox,用户可以从枚举中选择不同的值 . 应从DataTable中读取初始值

代码:

enum MyEnum {I1 =  1, I2 = 2,  I3 = 3}

DataTable table = new DataTable();
        table.Columns.Add("ID", typeof(int));
        table.Columns.Add("List", typeof(MyEnum));

        //fill table
        for(int i = 0; i < 10; i++) 
        {
            var row = table.NewRow();
            table.Rows.Add(row);

            row["ID"] = i;
            row["List"] = MyEnum.I2;
        }

        //build DataGridView and fill it with DataTable
        dataGridView1.AutoGenerateColumns = false;

        //Column1
        dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { Name = "ID", DataPropertyName = "ID" });

        //Column2
        DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
        col.Name = "My Enum Column";
        col.DataSource = Enum.GetValues(typeof(MyEnum));
        col.ValueType = typeof(MyEnum);
        col.DataPropertyName = "List";
        dataGridView1.Columns.Add(col);


        dataGridView1.DataSource = table;

执行代码时,我收到以下错误:System.FormatException:无效的DataGridViewComboBoxCell-Value

一旦我设置col.DataPropertyName就会发生错误 . 所以问题是,如何将DataGridViewComboBoxColumn绑定到DataTable,其中一个列填充了枚举的值,并通过ComboBox DropDown我可以选择对枚举有效的所有值?

谢谢你的帮助

1 回答

相关问题