如何显示组合框selectedvalue?

时间:2013-12-22 07:44:09

标签: vb.net

我正在填充一个包含数据集的组合框:

ComboName.Items.Clear()
DS = New DataSet
DS.Tables.Add(New DataTable("DEMAND"))
DA = New SqlDataAdapter("select * from DEMAND", CON)
DA.Fill(DS, "DEMAND")
ComboName.DataSource = DS.Tables(0)
ComboName.DisplayMember = "name"
ComboName.ValueMember = "id"

现在我想借助ValueMember

来检索地址
Private Sub ComboName_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboName.SelectedIndexChanged
    Dim I as Integer = CType(ComboName.SelectedValue.ToString(), Integer)

    CMD = New SqlCommand("select * from DEMAND where id=" & I, CON)
    RDR = CMD.ExecuteReader()
    If RDR.Read Then
        TxtAdrs.Text = RDR!adrs
    End If
End Sub

但在这里我收到了一个错误:

  

从字符串"System.Data.DataRowView"到类型'Integer'的转换无效。

有人可以说出我做错了吗?

3 个答案:

答案 0 :(得分:2)

您的ComboName.SelectedValue.ToString()会返回班级名称

"System.Data.DataRowView"

这是ToString()

的默认行为

尝试从DataRowView获取特定列。

SelectedItem是绑定到ComboBox数据源的数据对象,在本例中是DataRowView。

您需要将SelectedItem强制转换为DataRowView,然后从中检索适当的值。

您可以按照以下方式执行此操作:

DataRowView oDataRowView = ComboName.SelectedItem as DataRowView;
string sValue = "";

if (oDataRowView != null) {
   sValue = oDataRowView.Row["YourFieldName"] as string;
}

答案 1 :(得分:0)

我猜错误就在这一行

Dim I as Integer = CType(ComboName.SelectedValue.ToString(), Integer)

像这样使用

Dim I as Integer = CType(ComboName.SelectedValue, Integer)

希望这有帮助

答案 2 :(得分:0)

尝试将其声明为对象而不是整数。

dim selecteditem as object
selecteditem = comboname.selectedvalue