gpt4 book ai didi

c# - 从 DataTable 和枚举填充 DataGridViewComboBoxColumn

转载 作者:行者123 更新时间:2023-12-04 18:05:18 31 4
gpt4 key购买 nike

我正在尝试用 DataTable 中的值填充 DataGridView。 DataGridView 中的列之一应列出一个组合框,用户可以在其中从枚举中选择不同的值。初始值应该从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 绑定(bind)到 DataTable,其中一列填充了枚举中的值,并通过 ComboBox DropDown 我可以选择对枚举有效的所有值?

谢谢你的帮助

最佳答案

解决方案是将 DataGridViewComboBoxColumn.DataSource 绑定(bind)到具有两列的 DataTableDisplayValue 并将列的 DisplayMemberValueMember 属性设置为 DataTable 列名。

请参阅已接受的答案:DataGridView linked to DataTable with Combobox column based on enum

关于c# - 从 DataTable 和枚举填充 DataGridViewComboBoxColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28151634/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com