绑定的组合框项是指不同的字段项

Bound combobox items refers to different field items

我在 vb.net 中得到了一个组名的有界组合框。我可以在组合框的下拉项中查看一组组名称。但是当我进行插入或更新查询时,我需要使选定的组名称指的是组号。我不想在数据库中存储字母,而是我更喜欢数字。我该怎么做?!

到目前为止,这是我的代码:

cmd1.Parameters.AddWithValue("@group", DirectCast(Additemcombobox.SelectedItem, 
                                  DataRowView).Item("GroupName"))

在数据库中存储组名目前运行良好。

我的问题可能没有得到很好的解释。有情况请问我... 任何帮助将不胜感激

您可以向用户显示一个元素,例如名称,但使用不同的元素作为代码,使用 DisplayMemberValueMember

来标识项目
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 项目而烦恼。

请注意,SelectedValueObject,因此您必须转换为整数或其他任何形式才能在其他地方使用。