我在WPF表单上有一个DataGrid
,ItemsSource
属性设置为DataTable
。这个DataTable
是从SQLite表中填充的,我使用填充了DataGridTemplateColumn
的{{1}}来显示其中一列。 ComboBox
正确地显示了类 DummyClass 中的ComboBox
(字符串)和DisplayMember
(int)。但是,当我从SelectedValue
中选择一个值时,ComboBox
会在该行旁边显示验证错误(红色感叹号)。
我为DataGrid
更改选择时添加了一个事件处理程序,以便我可以查看验证错误。验证错误显示为:
无法转换价值'1'。
其中“1”是在ComboBox
中选择的任何索引。
导致此验证错误的原因是什么?
ComboBox
答案 0 :(得分:1)
我刚刚解决了类似的问题但是在Windows窗体中的DataGrid对象。我正在使用SQLite表作为数据源。我从特定的SQLite表中分配了一个带有DisplayMember和ValueMember的DataGridViewComboBoxColumn。但是当我运行代码时,DataGrid没有显示DisplayMember值,我只能看到存储在绑定到DataGrid的表中的整数值。
原来,ValueMember表的SQLite数据类型与分配给DataGrid中组合框的字段的数据类型不匹配。查找表中的ValueMember字段设置为SQLite数据类型“Integer”。绑定到DataGrid表的SQLite表的组合框字段中的SQLite数据类型是SQLite类型'int'。
SQLite类型'Integer'映射到.Net System.Int64,其代码为typeof(Long)。
SQLite类型'int'映射到.Net System.Int32,其代码为typeof(int)。
所以我修改了SQLite表,以确保所有整数类型字段都是SQLite类型'int'。
然后我修改了我的C#DataSet代码,以便将所有整数类型字段设置为typeof(int)。
现在DataGridViewComboBoxColumn按预期运行。
答案 1 :(得分:0)
SQLite表中的列的类型为Long
,其中我的observable集合属性的类型为int
。这导致了数据验证错误。