1

我在加载时用这个代码填充了我的组合框1

sql = "select name1,id1 from table1"
da = New Odbc.OdbcDataAdapter(sql, con)
da.Fill(ds, "cbtbl1")
ComboBox1.DataSource = ds.Tables("cbtbl1")
ComboBox1.DisplayMember = ds.Tables("cbtbl1").Columns("name1").Caption

我的第二个组合框 2 与组合框 1 相关。我将此代码插入到 combobox1 中selectedvaluechanged。这将根据其相关 ID 更改为 combobox2 的值

sql = "select name2,id2 from table2 where id1=" & ???????
da = New Odbc.OdbcDataAdapter(sql, con)
da.Fill(ds, "cbtbl2")
ComboBox2.DataSource = ds.Tables("cbtbl2")
ComboBox2.DisplayMember = ds.Tables("cbtbl2").Columns("name2").Caption

在我的代码中,我有问号。它应该是 table1 的 id,我不知道如何获取 :( 或者放什么

4

1 回答 1

1

您应该将ValueMemberCombobox1 的 设置为您从数据库中检索到的 ID,并使用该SelectedValue属性来检索所选项目的 ID。

除非您在数据绑定 Combobox1 时指定属性,否则我认为它不会起作用ValueMember,所以不要忘记先这样做。

好的,我用我目前正在处理的数据库快速组合了一些东西(它是 OLEDB,但对此无关紧要)

Public Sub New()

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.

    Dim ds As New DataSet()
    Dim test As New OleDbDataAdapter("SELECT [ID], [名前] FROM [Tレイヤ管理]", DBConnections.PrimaryAccessDBConnection)
    Call test.Fill(ds, "testTable")

    Me.ComboBox1.DataSource = ds.Tables("testTable")
    Me.ComboBox1.ValueMember = "ID"
    Me.ComboBox1.DisplayMember = "名前"

    AddHandler Me.ComboBox1.SelectedValueChanged, AddressOf Something

End Sub

Private Sub Something(sender As Object, e As EventArgs)

    Call MessageBox.Show(String.Format("ID {0}", Me.ComboBox1.SelectedValue))

End Sub

我的身份证显示得很好。

更新:

如果这仍然不起作用,那么您可以通过以下方式获取所选项目:

Private Sub Something(sender As Object, e As EventArgs)

    Dim selectedItem As DataRowView = CType(Me.ComboBox1.SelectedItem, DataRowView)

    Call MessageBox.Show(String.Format("ID {0} Name {1}", New Object() {selectedItem("ID"), selectedItem("名前")}))

End Sub
于 2013-03-15T06:55:35.907 回答