Combobox选择值返回DataRowView

时间:2011-04-08 12:37:06

标签: .net vb.net winforms

我将combobox.datasource设置为dataview项(以便它绑定到表),当我从combobox.selectedvalue获取返回值时。错误被返回bcos,它的类型为“system.data.datarowview”

我不知道为什么它的返回值通常是文本

代码:

 If ldstList.Tables(0).Rows.Count <> 0 Then
                        With CbStatus
                            .DataSource = ldstList.Tables(0)
                            .DisplayMember = "CardStatus"
                            .ValueMember = "StatusID"
                        End With
                    End If

If Integer.Parse(CbStatus.SelectedValue) > 0 Then
    GridLoad(Integer.Parse(CbStatus.SelectedValue))
End If

4 个答案:

答案 0 :(得分:29)

无论其他问题或解决方案如何,请确保按正确的顺序设置ComboBox的属性:

.DisplayMember = ...;
.ValueMember = ...;
.DataSource = ....;  // Notice how this one is last?

首先设置DataSource属性将导致“system.data.datarowview”问题。

答案 1 :(得分:2)

您没有绑定到DataView,而是绑定到DataTable本身。 DefaultView属性返回您可以使用的DataView:

  CbStatus.DataSource = ldstList.Tables(0).DefaultView

答案 2 :(得分:2)

我不知道问题出现的原因。但我找到了一个解决方案:

If Integer.Parse(DirectCast(CbStatus.SelectedItem, DataRowView).Item("StatusID")) > 0 Then
  GridLoad(Integer.Parse(DirectCast(CbStatus.SelectedItem, DataRowView).Item("StatusID")))
End If

感谢那些回答的人,如果你有答案,请发表解释或更好的解决方案。

答案 3 :(得分:1)

在Combobox或下拉属性中转到数据绑定属性...选择高级 ...选择文本或选定值或selectedItem,具体取决于您想要的属性设置然后单击同一屏幕右上角的绑定下拉列表,选择要返回显示的列的名称,然后选择上的数据格式格式类型列表框(数字,货币,日期时间等),然后单击“确定”。这假设您确实在组合框或下拉列表中设置了值成员显示成员属性,这也假设您没有通过代码绑定,而是通过数据源属性你的控制(下拉/组合框)