1

我一直很难为我的问题找到解决方案,我想在我的 ListBox 中用 SQL 显示我的 DB 上的所有列......有人知道吗?请帮帮我?

这是我的代码:

Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
        Try
            Dim thisConnection As New SqlConnection("Data Source=#####;Initial Catalog=####;Persist Security Info=True;User ID=#####;Password=#####") 
            thisConnection.Open()
            Dim sql As String = ("SELECT ControlNo,EmpNo,CheckOutDate,CheckOutTime,TaxiNo,PlateNo,Model,Make FROM dbo.ChkInOut WHERE ControlNo='" & txtsearch.Text & "'")
            Dim da As New SqlDataAdapter(sql, thisConnection)
            da.Fill(ds, "dbo.ChkInOut")
            Dim dt As DataTable = ds.Tables("dbo.ChkInOut")
            ListBox1.DataSource = dt
            ListBox1.DisplayMember = ("ControlNo")
            txtCtrlNo.DataBindings.Add("text", dt, "ControlNo")
            txtEmpNo.DataBindings.Add("text", dt, "EmpNo")
            txtCheckOutDate.DataBindings.Add("text", dt, "CheckOutDate")
            txtCheckOutTime.DataBindings.Add("text", dt, "CheckOutTime")
            txtTaxiUnitNo.DataBindings.Add("text", dt, "TaxiNo")
            txtPlateNo.DataBindings.Add("text", dt, "PlateNo")
            txtModel.DataBindings.Add("text", dt, "Model")
            txtMake.DataBindings.Add("text", dt, "Make")
            thisConnection.Close()
        Catch ex As Exception
        End Try
    End Sub
4

1 回答 1

1

我认为您不能将多个列添加到单个列表框中。相反,我建议将您要显示的列 ( DisplayMember) 连接为单个列。

也许是这样的(假设所有列都是 varchar - 如果不是,您将需要使用CASTCONVERT并且可能COALESCE

SELECT ControlNo + ': ' + EmpNo + ': ' + CheckOutDate + ': ' + 
          CheckOutTime + ': ' + TaxiNo + ': ' + PlateNo + ': ' + 
          Model + ': ' + Make as DisplayColumn
FROM dbo.ChkInOut 
WHERE ControlNo='" & txtsearch.Text & "'"

如果没有,您可以考虑使用 Gridview 或其他支持多列的控件。

顺便说一句——你没有设置一个ValueMember——你可能也需要根据你的需要这样做。

祝你好运。

于 2013-01-31T03:31:47.817 回答