如何在数据绑定组合框上选择值?

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。有没有一种方法可以选择适当的行而不必遍历所有现有行?

Met*_*ght 3

根据 MSDN:

SelectedValue:获取或设置由 ValueMember 属性指定的成员属性的值。

因此,根据文档,这样做应该可行,假设 123 是组合框中存在的 ID,因为 ID 已设置为 ValueMember:

comboBox.SelectedValue = 123
Run Code Online (Sandbox Code Playgroud)

如果您无法让它工作(也许与 DataView 的绑定效果不好?),那么您可以使用始终有效的 SelectedIndex。