如何在vb.net的列表框中选择项目的值和名称

时间:2014-05-10 09:20:11

标签: vb.net listbox sqldatareader

我想选择列表框时选择payrollcode虽然列表应该显示为payrollname。一旦我有了paycode,我就可以在另一个查询中使用它。我有一个php背景,所以这对我来说太难了。

 Dim cmd As New SqlCommand("select tblPayrollCode.payrollcode_name ,tblPayrollCode.payrollcode_code  from tblPayrollCode where tblPayrollCode.systemcode_id=0 and tblPayrollCode.deduction= 'false'", Getconnect)
    Dim dr As SqlDataReader
    Getconnect()
    dr = cmd.ExecuteReader
    While dr.Read
        lsttrans.Items.Add(dr.Item("payrollcode_name"), payrollcode_code)
    End While
    dr.Close()

3 个答案:

答案 0 :(得分:1)

创建一个类来创建保留每个显示项/数据对的对象。该类需要指定重写的ToString方法。此方法重写基类(Object)的ToString方法,以确保显示项而不是类名显示在列表框中。

Public Class CListItem

Private m_sItemData As String
Private m_sItemDisplay As String

Public Sub New(ByVal sValue As String, ByVal sData As String)
    m_sItemData = sData
    m_sItemDisplay = sValue
End Sub

Public Overrides Function ToString() As String
    Return m_sItemDisplay
End Function

Public Property ItemData() As String
    Get
        Return m_sItemData
    End Get
    Set(ByVal Value As String)
        m_sItemData = Value
    End Set
End Property

Public Property ItemDisplay() As String
    Get
        Return m_sItemDisplay
    End Get
    Set(ByVal Value As String)
        m_sItemDisplay = Value
    End Set
End Property

End Class

像这样执行循环。这会将CListItem对象添加到列表框的项集合中,并显示传递给构造函数的第一个参数。

While dr.Read
    lsttrans.Items.Add(New CListItem(dr.Item("payrollcode_name").ToString, dr.Item("payrollcode_code").ToString))
End While

然后,您可以通过添加此代码并双击列表框来检索payrollcode_name和payrollcode_code:

Private Sub lsttrans_DoubleClick(sender As Object, e As EventArgs) Handles lsttrans.DoubleClick
    Dim sSelectedDisplay As String = DirectCast(lsttrans.SelectedItem, CListItem).ItemDisplay
    Dim sSelectedData As String = DirectCast(lsttrans.SelectedItem, CListItem).ItemData()

    MessageBox.Show("The selected payrollcode_name is " & sSelectedDisplay & " and the selected payrollcode_code is " & sSelectedData)
End Sub

答案 1 :(得分:1)

添加@Guru Josh的回答

While dr.Read
        lsttrans.Items.Add(New CListItem(dr.Item("payrollcode_name"), dr.Item("payrollcode_code")))
    End While

我将最后一点改为上述工作现在很好。

答案 2 :(得分:0)

string col1Value = dr [“ColumnOneName”]。ToString()