我对DataGridViews有一些经验,我无法解决这个超级简单的问题......
我有一个带有comboboxcolumn 预设可能选项的数据网格视图(3个简单选项)。我有一个包含表格的数据库,我想为列中的单元格选择正确的值。我需要保留用户可能稍后更改选项的选项(并将其保存回DB)。
我创建了一个带有选项的数据表:
Dim dtShift As New DataTable
dtShift.Columns.Add("ValueM")
dtShift.Columns.Add("DisplayM")
dtShift.Rows.Add({123, "123"})
dtShift.Rows.Add({345, "345"})
dtShift.Rows.Add({678, "678"})
然后我以这种方式分配值(ds是数据填充数据):
Me.DataGridView1.AutoGenerateColumns = False
Dim colpon As DataGridViewComboBoxColumn = Me.DataGridView1.Columns("PonLen")
With colpon
.DataSource = dtShift
.ValueMember = "ValueM"
.DisplayMember = "DisplayM"
.DataPropertyName = "PonLen".ToString ' contains an option like "345"
'.ValueMember = "PonLen" ' not needed, if Display member is saved
End With
...但这并不好用,即使它尽可能接近我。一世 这些列有正确的选项,选择了正确的值,但是DataErrorEvent会使用错误泛滥测试日志TextBox,如下所示:
Row=12 cell=3 : System.FormatException: DataGridViewComboBoxCell value is not valid.
答案 0 :(得分:0)
好的,所以问题在于数据类型,我没有意识到,像System.Int16与System.Byte(ShortInt vs tinyInt)之类的差异确实很重要。
DB字段: TinyInt (0到256)
ValueMember:System。字节(0到256 - 从System.Int16或32更改)
...现在它的工作原理与之相同,但没有错误: - )
此致
橡树