Tag: 数据表datagridviewcombobox

DataGridView基于枚举链接到带有Combobox列的DataTable

昨天花了很多时间搜索这个,我不得不放弃。 我有一个链接到Datatable的DataGridView。 其中一列是枚举,我希望它显示为Combobox列。 我在DataGridView中找到了这个链接创建下拉列表选项,其中包含使用以下内容的答案… DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn(); col.Name = “My Enum Column”; col.DataSource = Enum.GetValues(typeof(MyEnum)); col.ValueType = typeof(MyEnum); dataGridView1.Columns.Add(col); 我已经尝试了但是当用户创建一个新记录时,从下拉列表中选择一个选项(正确的选项显示)然后离开该字段,他们得到消息“DataGridViewComboBoxCel值无效”。 我在搜索中找到了一些解决方案,讨论如何捕获此错误,然后什么都不做(从而隐藏错误),但我想解决它而不是隐藏它。 如果用户确定了他们得到的消息,则重复另外两次。 我还看到了遍历枚举值的解决方案,并创建了一个包含int和每个字符串的数据表,然后使用数据表作为组合中的数据源。 在使用后端MSSQL数据库时,我曾使用数据表作为combobox的源代码。 另一种变体是循环并直接写入组合这样的… foreach (MyEnum bar in MyEnum.GetValues(typeof(MyEnum))) { string barName = MyEnum.GetName(typeof(MyEnum), bar); MyComboColumn.Items.Add(barName); } 比如在这个链接中的问题。 如何将一些枚举值添加到combobox中 我的问题:可以使用Enum.GetValues(typeof(MyEnum))使其工作; 方法? 数据表方法看起来很长。 然后循环使用MyComboColumn.Items.Add(barName); 也有点长篇大论,并且会导致枚举的字符串版本记录在数据表中而不是整数(我宁愿它是整数)。 我找不到Enum.GetValues(typeof(MyEnum))方法的示例,其中网格链接到数据表。 当我搜索它时,我只是遇到了其他方法。 我认为问题可能在于基础表列上的数据类型。 我已经尝试过这个整数,作为一个字符串,我试过不定义它。 我想不出还有什么可以尝试这种类型。 这是我的简化代码。 (DVG是我表格上的DataGridView)。 enum […]