【问题标题】:VB.NET Bound ComboBox SelectedValue does not displayVB.NET Bound ComboBox SelectedValue 不显示
【发布时间】:2012-01-05 21:15:50
【问题描述】:

我在加载时将数据表绑定到 combobox.DataSource。然后我给组合框一个 DisplayMember 和一个 ValueMember(数据表中有 2 个不同的列)。在组合框的 SelectedIndexChanged 中,我想使用组合框的 SelectedValue 属性,只是为了测试我的 MsgBox(combobox.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

【问题讨论】:

  • 您能否添加您的数据绑定代码和 selectedindexchanged 代码以便我们仔细检查?
  • 添加了代码! (DisplayMember 在表单上也显示良好)

标签: vb.net combobox


【解决方案1】:

我认为问题在于您需要绑定表格的 DefaultView:

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

【讨论】:

  • 唯一的事情是,在 OnLoad 分配数据源时,我必须为 combobox_SelectedIndexChanged 创建一个异常,因为它仍然将 System.Data.DataRowView 作为 SelectedValue 输出(并且只触发一次)但在数据源分配之后它工作正常。但是,如果您将异常处理置于 SelectedValueChanged 下,则此事件会触发两次,第二次会触发正确的值。谢谢!
【解决方案2】:

首先,您必须确保为Combobox 选择了DropDownList 作为DropDownStyle,并且绑定有效。

那么你必须替换MsgBox(cbCISoftware.SelectedValue) 与MsgBox(cbCISoftware.SelectedValue.ToString)

否则要获得结果,MsgBox(cbCISoftware.Text) 会起作用,但它可能不是您想要的:-)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 2015-09-10
    • 2012-07-14
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多