在我的窗體中,我有一個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