DataGridComboBoxCell-无法以编程方式填充值

时间:2019-03-16 17:39:28

标签: vb.net datagridview datagridcomboboxcolumn

我要在DataGridView中填充2列,其中DataGridViewTextBoxColumn用于名称标签,而DataGridViewComboBoxColumn用作下拉列表,用于选择要映射到该名称的SQL列名称。

我要遍历我的名字,并为每个名字创建一行。每行应显示一个字段的名称(String对象),另一列应是一个组合框(值在List (Of String)之内)。我不断引发一个异常,说“值无效”:

For Each sourceColumn As String In sourceColumnList
    Dim item As New DataGridViewTextBoxCell
    Dim destcombo As New DataGridViewComboBoxCell
    item.Value = sourceColumn
    destcombo.Items.AddRange(sqlColumnSelectionList.ToArray())

    '    ERROR IS HERE, REFERRING TO INVALID COMBO BOX |
    '                                                 \|/
    list_Destination_SQLMap.Rows.Add(sourceColumn, destcombo)
Next

我已经四处搜寻,但是只能找到有关如何使用绑定的而非未绑定的数据源解决此问题的示例。我知道我缺少什么,这是我第一次使用DataGridView。请帮我!预先谢谢你。

1 个答案:

答案 0 :(得分:0)

添加DataGridViewComboBoxColumn时,还需要将其DataSource属性设置为有效来源。如果DataTable是从数据库中获取的数据,或者是List (Of T)-您的List (Of String)就可以正常工作。

在创建并填充sqlColumnSelectionList之后添加下面的代码。 (不要忘记将变量名column2更改为您命名的名称)

column2.DataSource = sqlColumnSelectionList

重要的是要记住,DataGridViewComboBox的工作方式与普通ComboBox一样,涉及初始化和一般用法。

完成此操作后,添加行时应更改以下行:

list_Destination_SQLMap.Rows.Add(sourceColumn, destcombo)

成为:

list_Destination_SQLMap.Rows.Add(sourceColumn, "")

这会将新行添加到DataGridView中,在“文本”列中有一个与字段名称匹配的条目(根据您的描述),第二列将为空白,允许用户从下拉列表中选择值。

如果需要将第二列预选为一个值,请用该值替换空字符串。

DataGridViewComboBoxColumn只需要填充一次,而不是每次将新单元格添加到DataGridView时填充。