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

DataGridComboBoxCell - Can't Fill Values Programmatically

我正在用 2 列填充 DataGridView,一个 DataGridViewTextBoxColumn 用于名称标签,一个 DataGridViewComboBoxColumn 用作下拉列表以选择要映射的 SQL 列名称到名字。

我要循环遍历我的名字,并为每个名字创建一行。每行应显示字段名称(String 对象),另一列应为组合框(值在 List (Of String) 内)。我不断收到一个异常 'the value is not valid':

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.

添加 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,其中文本列中的条目与字段名称匹配(根据您的描述),第二列将为空白,允许用户 select下拉列表中的值。

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

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