簡體   English   中英

vb.net 如何在列表框中顯示 DB 值?

[英]vb.net How do to display DB values on a listbox?

我正在嘗試在列表框中顯示具有兩列值的多行,因此當用戶選擇一個選項時,他們會有一些額外的信息。

它應該是這樣的:

ej. 3 BestBuy

我使用相同的方法將數據輸出到我的 GridViews,但它不會在列表框中顯示任何內容。 將數據從數據庫輸出到列表框的正確方法是什么。

SQL 控制類函數

Public Function ExecQuery(query As String) As DataTable

    Dim DBDT = New DataTable
    Using DBCon As New SqlConnection(ConStr),
            DBCmd As New SqlCommand(query, DBCon)
        Params.ForEach(Sub(p) DBCmd.Parameters.Add(p))
        Params.Clear()
        DBCon.Open()
        DBDT.Load(DBCmd.ExecuteReader)
    End Using
    Return DBDT
End Function

'Add Params
Public Sub AddParam(Name As String, Value As Object)
    Dim NewParam As New SqlParameter(Name, Value)
    Params.Add(NewParam)
End Sub

我如何嘗試將數據添加到列表框

Protected Sub DivisionListBox_DataBinding(sender As Object, e As EventArgs) Handles DivisionListBox.DataBinding

    Try
        dt = SQL.ExecQuery("Select STR_GRP_ID, GROUP_DESC
                            FROM Store_Group_Desc ")

    Catch ex As Exception
        MsgBox(ex.Message)
        Exit Sub
    End Try

    DivisionListBox.DataSource = dt
    DivisionListBox.DataBind()
End Sub

我要做的是返回STR_GRP_ID並創建一個連接STR_GRP_IDGROUP_DESC字段的STR_GRP_ID GROUP_DESC

然后,您可以像正在執行的操作一樣將 DataTable 綁定到 ListBox,但指定 ListBox 的 DisplayMember 是您的別名列,而 ValueMember 是 id:

Try
    dt = SQL.ExecQuery("Select STR_GRP_ID, CONCAT_WS(' ', STR_GRP_ID, GROUP_DESC GROUP_DESC) AS DisplayText FROM Store_Group_Desc;")
Catch ex As Exception
    MessageBox.Show(ex.Message)
    Return
End Try

With DivisionListBox
    .DataSource = dt
    .DisplayMember = "DisplayText"
    .ValueMember = "STR_GRP_ID"
End With

我認為DataBinding事件永遠不會在您的代碼中被觸發。 您可以在事件內設置一個斷點,看看它是否曾經被觸發。

我選擇使用Page.Load事件來填充列表框。 我將實際填充列表框的用戶界面代碼與數據訪問代碼分開。

我讓服務器完成構建您想要顯示的字符串的工作。 我假設 id 字段是某種類型的數字字段,所以我將它轉換為 varchar。 然后添加了一個空格和描述字段。 這個新的選擇字段稱為 IDDesc。

IDDesc 是我想在列表框中顯示的字段名稱。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        FillListBox()
    End If
End Sub

Private Sub FillListBox()
    Dim ListBoxData = GetListBoxData()
    ListBox1.DataTextField = "IDDesc"
    ListBox1.DataSource = ListBoxData
    ListBox1.DataBind()
End Sub

Private Function GetListBoxData() As DataTable
    Dim DBDT = New DataTable
    Dim Query = "Select Cast(STR_GRP_ID As varchar) + ' ' + GROUP_DESC As IDDesc
                        FROM Store_Group_Desc "
    Using DBCon As New SqlConnection(ConStr),
            DBCmd As New SqlCommand(Query, DBCon)
        DBCon.Open()
        DBDT.Load(DBCmd.ExecuteReader)
    End Using
    Return DBDT
End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM