绑定的组合框项是指不同的字段项
Bound combobox items refers to different field items
我在 vb.net 中得到了一个组名的有界组合框。我可以在组合框的下拉项中查看一组组名称。但是当我进行插入或更新查询时,我需要使选定的组名称指的是组号。我不想在数据库中存储字母,而是我更喜欢数字。我该怎么做?!
到目前为止,这是我的代码:
cmd1.Parameters.AddWithValue("@group", DirectCast(Additemcombobox.SelectedItem,
DataRowView).Item("GroupName"))
在数据库中存储组名目前运行良好。
我的问题可能没有得到很好的解释。有情况请问我...
任何帮助将不胜感激
您可以向用户显示一个元素,例如名称,但使用不同的元素作为代码,使用 DisplayMember
和 ValueMember
来标识项目
Dim SQL = "SELECT Id, Name FROM GroupCode ORDER BY Name"
...
GrpDT = New DataTable
GrpDT.Load(cmd.ExecuteReader)
cboGroup.DataSource = GrpDT
cboGroup.DisplayMember = "Name"
cboGroup.ValueMember = "Id"
用户只会看到名称,而代码可以使用 ValueMember
:
Private Sub cboGroup_SelectedValueChanged(...etc
Console.WriteLine(cboGroup.SelectedValue)
End Sub
它打印组 ID 而不是名称。根据 SQL 中的 ORDER BY 子句和 ID, SelectedIndex
可能匹配也可能不匹配,因此响应 SelectedValueChanged
事件。如果您使用 SelectedValue
而不是 SelectedItem
,您将不必为 DataRowView
项目而烦恼。
请注意,SelectedValue
是 Object
,因此您必须转换为整数或其他任何形式才能在其他地方使用。
我在 vb.net 中得到了一个组名的有界组合框。我可以在组合框的下拉项中查看一组组名称。但是当我进行插入或更新查询时,我需要使选定的组名称指的是组号。我不想在数据库中存储字母,而是我更喜欢数字。我该怎么做?!
到目前为止,这是我的代码:
cmd1.Parameters.AddWithValue("@group", DirectCast(Additemcombobox.SelectedItem,
DataRowView).Item("GroupName"))
在数据库中存储组名目前运行良好。
我的问题可能没有得到很好的解释。有情况请问我... 任何帮助将不胜感激
您可以向用户显示一个元素,例如名称,但使用不同的元素作为代码,使用 DisplayMember
和 ValueMember
Dim SQL = "SELECT Id, Name FROM GroupCode ORDER BY Name"
...
GrpDT = New DataTable
GrpDT.Load(cmd.ExecuteReader)
cboGroup.DataSource = GrpDT
cboGroup.DisplayMember = "Name"
cboGroup.ValueMember = "Id"
用户只会看到名称,而代码可以使用 ValueMember
:
Private Sub cboGroup_SelectedValueChanged(...etc
Console.WriteLine(cboGroup.SelectedValue)
End Sub
它打印组 ID 而不是名称。根据 SQL 中的 ORDER BY 子句和 ID, SelectedIndex
可能匹配也可能不匹配,因此响应 SelectedValueChanged
事件。如果您使用 SelectedValue
而不是 SelectedItem
,您将不必为 DataRowView
项目而烦恼。
请注意,SelectedValue
是 Object
,因此您必须转换为整数或其他任何形式才能在其他地方使用。