我要在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
。请帮我!预先谢谢你。
答案 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时填充。