Zol*_*mon 5 vb.net data-binding combobox
我有一个ComboBox被绑定到一个DataView被填充的DataTable. 这DataTable有三列。在DataView绑定到ComboBox我之前添加另一列并设置一些值。
Dim table As DataTable = _retrieve.GetAllVersionsTable()
table.Columns.Add("FirstRow", GetType(Boolean))
Dim row As DataRow = table.NewRow()
row("ID") = -1
row("SomeValue") = -1
row("SomeText") = "N/A"
row("FirstRow") = True 'Fort sorting...
Dim view As DataView = New DataView(table)
view.Sort = "FirstRow DESC, SomeText DESC"
table.Rows.InsertAt(row, 0)
comboBox.DataSource = view
comboBox.ValueMember = "ID"
comboBox.DisplayMember = "SomeText"
Run Code Online (Sandbox Code Playgroud)
稍后,我检索相同的数据并创建一个新数据并将其DataTable绑定到DataGridView另一种形式的 a。在这个表单中,我为DataGridView.
当我回到第一个表单时ComboBox,我希望选择ComboBox具有相同值的行,该行是我从第二个表单设置的,并绑定到它的ValueMember属性。我认为这SelectedValue可以解决这个问题,但事实并非如此。我还可以做些什么?
comboBox.SelectedValue = myIdentityValue
Run Code Online (Sandbox Code Playgroud)
由于行不同,我也不能使用SelectedItem。有没有一种方法可以选择适当的行而不必遍历所有现有行?
根据 MSDN:
SelectedValue:获取或设置由 ValueMember 属性指定的成员属性的值。
因此,根据文档,这样做应该可行,假设 123 是组合框中存在的 ID,因为 ID 已设置为 ValueMember:
comboBox.SelectedValue = 123
Run Code Online (Sandbox Code Playgroud)
如果您无法让它工作(也许与 DataView 的绑定效果不好?),那么您可以使用始终有效的 SelectedIndex。