2012-01-05 136 views
0

我将一个数据表绑定到加载时的combobox.DataSource。然后给组合框一个DisplayMember和一个ValueMember(数据表中的两个不同的列)。在组合框的SelectedIndexChanged中,我想使用组合框的SelectedValue属性,只是为了测试我MsgBox(combobox.SelectedValue),并且我得到了“参数'提示''无法转换为'String'类型。为什么它没有显示价值? :(VB.NET绑定组合框SelectedValue不显示

OnLoad 
    cbCISoftware.DataSource = dbMaps.Tables("maps") 
    cbCISoftware.ValueMember = "id" 
    cbCISoftware.DisplayMember = "name" 

SelectedIndexChanged of cbCISoftware 
    MsgBox(cbCISoftware.SelectedValue) 

SelectedValue.ToString outputs 
    System.Data.DataRowView 
+0

你可以添加你的数据绑定代码和selectedindexchanged代码,所以我们可以仔细检查? – 2012-01-05 21:26:47

+0

添加了代码! (也是DisplayMember在表单上显示的很好) – Theveloper 2012-01-05 21:31:04

回答

1

我认为问题是,你需要绑定表的默认视图:

cbCISoftware.DataSource = dbMaps.Tables("maps").DefaultView 
+0

唯一的是,OnLoad当它分配数据源时,我必须为combobox_SelectedIndexChanged创建一个异常,因为它仍然输出System.Data.DataRowView作为SelectedValue(它只会触发一次),但数据源分配后,它工作正常。但是,如果将异常处理置于SelectedValueChanged下,则该事件触发两次,第二次触发正确的值。谢谢! – Theveloper 2012-01-06 16:19:34

0

首先,你必须确保有选择DropDownListDropDownStyleCombobox,而且绑定工作。

然后你有MsgBox(cbCISoftware.SelectedValue.ToString)

更换 MsgBox(cbCISoftware.SelectedValue)

否则为获得结果,MsgBox(cbCISoftware.Text)将工作,但它可能不是你正在寻找的:-)

我可以为您提供完整的代码来做绑定,如果你需要它。