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

问题描述 投票:0回答:1

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

我要通过我的名字循环,并为每个人创建一行。每行应显示一个字段的名称(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

我已经google了一下,但只能找到如何使用绑定的数据源解决此问题的示例,而不是未绑定的数据源。我知道我错过了什么,这是我第一次使用DataGridView。请帮我!先感谢您。

vb.net datagridview datagridcomboboxcolumn
1个回答
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,Text列中的条目与字段名称匹配(根据您的描述),第二列将为空,允许用户从下拉列表中选择值。

如果需要将第二列预先选定为某个值,请将该字符串替换为该值。

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

© www.soinside.com 2019 - 2024. All rights reserved.