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

时间:2016-02-28 00:21:42

标签: database vb.net combobox items multivalue

我在vb.net中有一个有组合的组合框到一个组名。我可以在组合框的下拉项中查看GROUP NAMES集。但是当我执行插入或更新查询时,我需要使选定的组名称引用GROUP NUMBER。我不想在数据库中存储字母,而是我更喜欢数字。我怎么能这样做?!

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

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以向用户显示一个元素,例如名称,但使用不同的元素代码,以使用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,因此您必须转换为整数或其他任何地方使用。