我看到许多类似问题的答案,人们说为了获取组合框中加载的项目的值,您需要使用
combobox1.displayMamer =""
combobox1.valuemember=""
combobox1.datasource=""
但是这个东西不起作用......
这就是我所拥有的......
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Using con As New SqlConnection(sConnection)
con.Open()
Using com As New SqlCommand("Select Code1, Code2 from tblTable6 where fldname ='Things'", con)
Using rdr = com.ExecuteReader
If rdr.HasRows Then
Do While rdr.Read = True
ComboBox1.Items.Add(rdr.GetString(0))
''''missing something here
Loop
con.Close()
End If
End Using
End Using
End Using
End Sub
我从表中选择Code1和Code2,我希望能够显示code1,并且在选择时,我希望能够获得Code2的值,但是对于displayMember和ValueMember,我看不到任何结果。
编辑:这是我的所有代码:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Using con As New SqlConnection(sConnection)
Using com As New SqlCommand("Select Label, Code from Table.....", con)
con.Open()
Dim dt As New DataTable()
Dim rows = dt.Load(com.ExecuteReader)
ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "Code"
ComboBox1.ValueMember = "Label"
con.Close()
End Using
End Using
End Sub
Dim rows = dt.Load(com.ExecuteReader) --- 此行带有下划线
错误表示:表达式不产生值
编辑2:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Using con As New SqlConnection(sConnection)
con.Open()
Using com As New SqlCommand("Select Label, Code from tblData where fldname ='M'", con)
Dim dt As New DataTable()
ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "Code"
ComboBox1.ValueMember = "Label"
con.Close()
End Using
End Using
End Sub
现在我收到另一个错误:无法绑定(bind)到新值成员。 这发生在combobox1.valuemember =“Label”
上最佳答案
您可以将 DataTable
绑定(bind)到要用作数据源
的控件,而不是填充项目集合。然后,您可以告诉它要显示哪个元素以及在进行选择时要向您提交哪个值:
Using con As New SqlConnection(sConnection)
Using com As New SqlCommand("Select Id, Name FROM ....", con)
con.Open()
Dim dt As New DataTable()
dt.Load(com.ExecuteReader)
cbox1.Datasource = dt
cbox.DisplayMember = "Name"
cbox.ValueMember = "Id"
End Using
End Using
“Name”和“Id”是数据库表中的列名称。在这种情况下,您可能想要使用的事件是 SelectedValueChanged
,并且 SelectedValue
将保存与所选项目相关的 ID。这将作为 Object
返回,因此您可能需要将其转换回原来的样子。
您还可以以相同的方式绑定(bind)到 List(Of T)
集合。在这种情况下,SelectedItem
可能是整个对象。例如,使用 List(of Employee)
,SelectedItem
将是用户选择的 Employee 的对象。
关于.net - 从数据库查询填充组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42747089/