vb.net组合框填充获取第一个组合框的索引
我用加载中的代码填充了combobox1vb.net组合框填充获取第一个组合框的索引,vb.net,combobox,Vb.net,Combobox,我用加载中的代码填充了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与
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相关。我在combobox1selectedvaluechanged
中插入了此代码。这将根据相关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:(或者放置什么)您应该将Combobox1的
ValueMember
设置为从数据库检索的id,并使用SelectedValue
属性检索所选项目的id
我认为除非在数据绑定Combobox1时指定ValueMember
属性,否则它不会起作用,所以别忘了先这样做
好的,我用目前正在开发的一个数据库很快就完成了一些工作(它是OLEDB,但这不重要)
我的身份证显示得很好
更新:
如果这仍然不起作用,则可以通过以下方式获取所选项目:
私有子对象(发送方作为对象,e作为事件参数)
您应该将Combobox1的
ValueMember
设置为从数据库检索到的ID,并使用SelectedValue
属性检索所选项目的ID
我认为除非在数据绑定Combobox1时指定ValueMember
属性,否则它不会起作用,所以别忘了先这样做
好的,我用目前正在开发的一个数据库很快就完成了一些工作(它是OLEDB,但这不重要)
我的身份证显示得很好
更新:
如果这仍然不起作用,则可以通过以下方式获取所选项目:
私有子对象(发送方作为对象,e作为事件参数)
我分配了
ComboBox1.ValueMember=ds.Tables(“cbtbl1”).Columns(“id1”).Caption
但我不知道如何在从combo1中选择值时重试。我尝试了sql=“从idtable1=1的table2中选择名称2,id2”&ComboBox1.SelectedValue.ToString
但它返回System.Data.DataRowView
我快速拼凑了一个示例,效果很好。因此,如果你的示例不正确,那么你肯定在某个地方遗漏了一步。我现在得到了ID,我检查了它,它是正确的。问题是我不知道Combox2为什么没有更改值。我在选择选项时看到了从combo1开始,我的combo2只需继续添加底部的值。如何重置它,使其不会追加?如果不希望发生这种情况,每次都应重置Combobox2中的项。只需在添加新项之前调用Combox2.items.Clear()
。我分配Combox1.ValueMember=ds.Tables(“cbtbl1”).Columns(“id1”).Caption
但我不知道在从combo1中选择值时如何重试。我尝试了sql=“select name2,id2 from table2,其中idtable1=1”&ComboBox1.SelectedValue.ToString
但它返回System.Data.DataRowView
我快速拼凑了一个示例,效果很好。因此,如果你的示例不正确,那么你肯定在某个地方遗漏了一步。我现在得到了ID,我检查了它,它是正确的。问题是我不知道Combox2为什么没有更改值。我在选择选项时看到了从combo1开始,我的combo2只需继续添加底部的值。如何重置它,使其不会追加?如果不希望发生这种情况,每次都应重置Combobox2中的项。只需在添加新项之前调用Combox2.items.Clear()
。
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
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