vb.net combobox.valuemember 查询?

vb.net combobox.valuemember query?

您好,我有以下代码可以从数据库中提取信息 table

Private Sub frm_8_IncidentResponseSelect_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    txt_incidentid.Text = frm_6_UpdateIncident.txt_incidentid.Text

    Dim dt As New DataTable
    Dim query As String = "select [response id] as responseid, " & _
        " ([response ID] &' '&[response date]) As responsedetails " & _
        " from response where [incident id] = " & txt_incidentid.Text & " "
    Using connection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Kevin\Desktop\Non Conformance\NonConformance.accdb")
        Using command As New OleDbCommand(query, connection)
            Using adapter As New OleDbDataAdapter(command)
                connection.Open()
                adapter.Fill(dt)
                connection.Close()
            End Using
        End Using
    End Using

    If dt.Rows.Count > 0 Then
        cb_responseid.DataSource = dt
        cb_responseid.DisplayMember = "responsedetails"
        cb_responseid.ValueMember = "responseid"
    End If
end sub

根据这段代码,在组合框中查看时,我可以看到显示了以下选项

14 年 2 月 15 日

15 年 2 月 15 日

这是预期的,然后我添加了以下代码以测试在突出显示组合框选项之一后 returned 的值成员

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    MsgBox(cb_responseid.ValueMember)
end sub

基于此代码,我希望消息框的值是 return 14 或 15,但它只显示 'responseid'

这是什么原因造成的?我如何让它按预期显示,或者这不可能?

感谢阅读

ValueMember 属性 是数据源列的名称,用于将项目的值保存在组合框中。

如果您想获得该项目的价值,您应该使用 SelectedValue 属性

你应该注意这个 属性 不为空,你应该将它的值转换为正确的数据类型(当然,如果你 运行 你的项目最好使用 Option Strict On,那么这是必需的练习)

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim curValue As Integer
    if cb_responseid.SelectedValue IsNot Nothing then
        curValue = DirectCast(cb_responseid.SelectedValue, Integer)
        MsgBox(curValue)
    End if
end sub