我在load
中使用此代码填充了我的combobox1sql = "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
我的第二个combobox2与combobox1有关。我在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,我不知道如何得到:(或放什么
答案 0 :(得分:1)
您应该将Combobox1的ValueMember
设置为您从数据库中检索到的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
我得到的ID很好用。
更新:
如果仍然无效,那么您可以通过这种方式获取所选项目:
Private Sub Something(发件人为对象,e为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