在我的窗体中,我有一个DataGridView绑定到一个具有DataSet作为数据源的BindingSource。我还通过BindingSource绑定到DataSet中不同列的窗体上有一些TextField和ComboBoxes。这个想法是,DataGridView中选定行的列中的值反映在窗体上的其他控件中。也许我听起来有点复杂,但连接TextFields以及绑定到数据集中的表的ComboBoxes相当容易。vb.net - 与BindingSource和不同的数据源的组合框
我的问题是,这次我想从数组中设置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
现在,这似乎部分工作作为组合框填充正确,我可以选择一个值,并将其显示在DataGridView中。但是当我更改DataGridView中的行时,它不会更新其选定值。列(“ColumnName”)是一个ComboBoxColumn,它以上面所示的方式获取其项目列表,并且它可以按照预期工作。
如果不明确,我有几个组合框与工作原理类似的功能,但它们绑定到数据表列如下:
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"
如果它的事项,该数据集来自Access数据库。
谢谢,这似乎工作!但现在发生了一些奇怪的事情,当我在一行中选择一个值,然后每次更改一行时,该列的值将被新选定的值覆盖。如果我更改为不相邻的行,则不会发生这种情况! – joharei 2012-07-12 07:36:26
实际上,我不必改变组合框中的值;如果我上下移动行,则组合框列中的值将更改为最后一行的值。 – joharei 2012-07-12 11:23:04