从DataTable和枚举中填充DataGridViewComboBoxColumn

3

我要尝试从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: Invalid DataGridViewComboBoxCell-Value。
一旦我设置col.DataPropertyName,就会出现此错误。所以问题是,如何将DataGridViewComboBoxColumn绑定到一个DataTable,其中一个列填充了来自枚举的值,并通过ComboBox DropDown选择所有适用于枚举的值?
谢谢你的帮助。

请点击以下链接 绑定Datagridview ComboBox - Virgilio Cossa
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接