我在vb.net中有一个有组合的组合框到一个组名。我可以在组合框的下拉项中查看GROUP NAMES集。但是当我执行插入或更新查询时,我需要使选定的组名称引用GROUP NUMBER。我不想在数据库中存储字母,而是我更喜欢数字。我怎么能这样做?!
到目前为止,这是我的代码:
cmd1.Parameters.AddWithValue("@group", DirectCast(Additemcombobox.SelectedItem,
DataRowView).Item("GroupName"))
将组名存储在数据库中目前运行良好。
我的问题可能没有得到很好的解释。请问我以防万一...... 任何帮助将不胜感激
答案 0 :(得分:1)
您可以向用户显示一个元素,例如名称,但使用不同的元素代码,以使用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
,因此您必须转换为整数或其他任何地方使用。