2016-02-28 75 views
1

我在vb.net中得到了一个有界的组合框。我可以在组合框的下拉菜单中查看组名称。但是当我做一个插入或更新查询时,我需要使选定的组名称引用GROUP NUMBER。我不想在数据库中存储字母,而是我更喜欢数字。我怎样才能做到这一点?!绑定的组合框项目指不同的字段项目

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

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

存储在数据库中,目前运作良好的组名。

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

+0

是否有与其绑定的表中的名称关联的数字?什么是它绑定到一个DataTable? – Plutonix

+0

是的,我得到了一个2字段的表:组号和组名 – charles

+0

组合框是以groupname为界的;我希望当我选择groupname来使用我的插入查询中的groupnumber – charles

回答

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和ID中的ORDER BY子句,SelectedIndex可能匹配也可能不匹配,因此应对SelectedValueChanged事件。如果您使用SelectedValue而不是SelectedItem,则无需使用DataRowView项目。

请注意,SelectedValueObject所以你将不得不投入整数或其他地方使用。

+0

非常感谢:D,但还有一件事情,那么我怎么可以在我的数据网格中看到groupname,而不是groupnumber时,通过我的项目。知道现在它全部保存在数字中? – charles

+0

这取决于该列是否只读。它也可能是Combo或使用cellformatting事件或CustomFormatter。既然你现在可以积极参与,请这么做,然后提出你看到的任何通知或帮助的问答。它帮助别人找到好的答案 – Plutonix

相关问题