我看到类似问题的许多答案,人们在说,为了获得在组合框中加载的项目的价值,你需要使用
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)---这一行加下划线
错误说:表达不会产生价值
EDIT2:
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
现在我得到另一个错误说:无法绑定到新的值成员。 这发生在combobox1.valuemember =" Label"
上答案 0 :(得分:4)
您可以将DataTable
绑定到要用作Datasource
的控件,而不是填充项集合。然后,当有选择时,您可以告诉它要显示哪个元素以及要提交给您的值:
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
"名称"和" Id"将是数据库表中的列名。在这种情况下,您可能希望使用的事件是SelectedValueChanged
,而SelectedValue
将保留与所选项目相关的ID。这将以Object
的形式返回,因此您可能需要将其转换回原来的状态。
您也可以以相同的方式绑定到List(Of T)
个集合。在这种情况下,SelectedItem
可以是整个对象。例如,使用List(of Employee)
,SelectedItem
将是用户选择的Employee的对象。