在我的表单中,我有DataGridView
绑定到BindingSource
,其DataSet
为DataSource
。我在表单上还有一些TextFields和ComboBoxes,它们绑定到DataSet
到BindingSource
中的不同列。我们的想法是DataGridView
中所选行的列中的值反映在表单上的其他控件中。也许我觉得它听起来有点复杂,但是连接TextFields以及绑定到数据集中的表的ComboBox都相当容易。
我的问题是,这次我要从数组中设置ComboBox
中的项目,而不是DataSet
中的表格。这就是我尝试过的:
Me.ComboBox.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", Me.TblBindingSource, "ColumnName", True))
Dim ItemArray(2) As String
ItemArray(0) = ""
ItemArray(1) = "Default"
ItemArray(2) = "User-set"
ComboBox.DataSource = ItemArray
现在,这似乎部分有效,因为ComboBox
已正确填充,我可以选择一个值,它会显示在DataGridView
中。但是当我更改DataGridView
中的行时,它不会更新其选定的值。列("ColumnName")
是一个ComboBoxColumn
,它按照上面显示的方式获取其项目列表,并且它会按预期工作。
如果不清楚;我有几个具有相似功能的ComboBox,但它们绑定到DataTable
中的列,如下所示:
Me.ComboBox1.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", Me.Tbl1BindingSource, "WiDMethodX", True))
Me.ComboBox1.DataSource = Me.Tbl2BindingSource
Me.ComboBox1.DisplayMember = "SomeColumn"
Me.ComboBox1.ValueMember = "SomeColumn"
如果重要,DataSet
来自Access Database
。
答案 0 :(得分:3)
SelectedValue
与ValueMember
属性一起使用,但由于您的数组列表没有描述性字段,因此无效。
尝试使用SelectedItem
进行绑定:
Me.ComboBox.DataBindings.Add(New Binding("SelectedItem", _
Me.TblBindingSource, "ColumnName", True))
答案 1 :(得分:0)
我意识到这些问题已经过时了,但我解决了类似的问题。我将组合框的text属性绑定到与我的组合框数据源的值成员或显示成员相关的绑定源成员。确保填充数据表(用于绑定源和组合框数据源)并在组合框组合文本之前将组合框绑定到其数据源。
Dim dtForBindingSource as DataTable
Dim bs as BindingSource
Dim dtForComboBox as DataTable
'Code to fill dtForBindingSource would go here
bs.DataSource = dtForBindingSource
'Code to fill dtForComboBox would go here
ComboBox.DataSource = dtForComboBox
ComboBox.DisplayMember = "ColumnToDisplay"
ComboBox.ValueMember = "ColumnXYZ"
'既然存在数据源并且设置了组合框,我就会进行数据绑定。
ComboBox.DataBindings.Add("Text", bs, "ColumnToDisplay")