我要尝试从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选择所有适用于枚举的值?
谢谢你的帮助。