2

在我的表单中,我有一个DataGridView绑定到一个BindingSourceDataSetas的 a DataSource。我在表单上还有一些 TextFields 和 ComboBoxes,它们DataSet通过BindingSource. 这个想法是,在选定行的列中的值DataGridView反映在窗体上的其他控件中。也许我让它听起来有点复杂,但连接 TextField 以及绑定到数据集中表的 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以上面显示的方式获取其项目列表的列,并且它可以按预期工作。

如果不清楚;我有几个具有类似功能的组合框,但它们绑定到 a 中的列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.

4

2 回答 2

4

SelectedValueValueMember属性一起使用,但由于您的数组列表没有描述性字段,因此不起作用。

尝试使用SelectedItem您的绑定:

Me.ComboBox.DataBindings.Add(New Binding("SelectedItem", _
                                      Me.TblBindingSource, "ColumnName", True))
于 2012-07-11T15:07:55.830 回答
0

我意识到这个问题很老,但我解决了类似的问题。我将组合框的文本属性绑定到与组合框数据源的值成员或显示成员相关的绑定源成员。确保填写数据表(用于绑定源和组合框数据源)并在组合框的数据绑定文本之前将组合框绑定到其数据源。

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")
于 2016-06-03T22:26:22.727 回答