在Datagridviewcomboboxcolumn中选择一个项目

时间:2015-10-26 17:52:23

标签: vb.net datagridview datagridviewcombobox

我对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.

1 个答案:

答案 0 :(得分:0)

好的,所以问题在于数据类型,我没有意识到,像System.Int16与System.Byte(ShortInt vs tinyInt)之类的差异确实很重要。

DB字段: TinyInt (0到256)

ValueMember:System。字节(0到256 - 从System.Int16或32更改)

...现在它的工作原理与之相同,但没有错误: - )

此致

橡树