vb.net组合框填充第一个组合框的索引

时间:2013-03-15 06:36:00

标签: vb.net combobox

我在load

中使用此代码填充了我的combobox1
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

我的第二个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,我不知道如何得到:(或放什么

1 个答案:

答案 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