我正在填充一个包含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
。请帮我!先感谢您。
添加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时。