Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net组合框填充获取第一个组合框的索引_Vb.net_Combobox - Fatal编程技术网

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

vb.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与

我用加载中的代码填充了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:(或者放置什么)

您应该将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