簡體   English   中英

從數據庫填充的排序列表框

[英]Sorting listbox filled from a database

好的,所以我正在使用此代碼來填充組合框選擇中的清單框。 我需要同時對清單框和組合框進行排序。 現在,我在對它們進行排序時遇到了問題。 我以為可以在數據庫中對其進行重新排序,但是它們的出現是基於創建時間,而不是基於其他任何東西。

上面的那個填充了組合框,我需要它按字母順序排序。

    private void cmbDatabaseFill()
    {
        string conStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=myDB.mdb";
        try
        {
            myConn = new OleDbConnection(conStr);
            myConn.Open();
        }
        catch (OleDbException ex)
        {
            MessageBox.Show("Error in connection ..." + ex.Message);
            return;
        }

        string sqlStr = "SELECT * FROM Index;";

        dAdapter = new OleDbDataAdapter(sqlStr, myConn);

        dset = new DataSet();

        dAdapter.TableMappings.Add("Table", "Index");

        dAdapter.Fill(dset);

        this.dviewmanager = dset.DefaultViewManager;

        this.cmbIndex.DataSource = this.dviewmanager;

        this.cmbIndex.DisplayMember = "Index.list";

        this.myConn.Close();
    }

這是針對清單框的,我需要根據數據庫中的“訂單”字段對其進行排序。 “順序”列僅包含數字,顯示內容應顯示的順序。

    private void clbDatabaseFill()
    {
        string newTableName = cmbIndex.Text.Replace(" ", "");

        string conStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=myDB.mdb";
        try
        {
            myConn2 = new OleDbConnection(conStr);
            myConn2.Open();
        }
        catch (OleDbException ex)
        {
            MessageBox.Show("Error in connection ..." + ex.Message);
        }

        string sqlStr = "SELECT * FROM " + newTableName + ";";

        dAdapter2 = new OleDbDataAdapter(sqlStr, myConn2);

        dset2 = new DataSet();

        dAdapter2.TableMappings.Add("Table", newTableName);

        try
        {
            dAdapter2.Fill(dset2);
        }
        catch (System.Exception)
        {
            return;
        }

        this.dviewmanager2 = dset2.DefaultViewManager;

        this.clbList.DataSource = this.dviewmanager2;

        this.clbList.DisplayMember = newTableName + ".Name";

        this.myConn2.Close();
    }

現在,就像我說的那樣,所有內容都可以正常顯示和運行,我稍后通過DataRowView而不是綁定valuemember的方式從檢查列表框中獲取所需的值,以引用數據庫中的列名,因為我正在處理每行多個值。 最大的問題是,它不會基於“訂單”列或它在數據庫中的顯示方式顯示。 有沒有簡單的方法可以完成這兩種不同的排序方法?

在設置.DataSource屬性之前,嘗試將這些行添加到其各自的組合框和清單框:

 this.dviewmanager.DataViewSettings["Index"].Sort = "Order DESC";

 this.dviewmanager2.DataViewSettings[newTableName].Sort = "Order DESC";

DataViewSettings["Index"]DataViewSettings[newTableName]引用數據集中的命名DataTable。

Order DESC指示要排序的列名為Order ,而DESC顯然意味着頂部的最大值。 根據您的要求刪除DESC或指定ASC。

暫無
暫無

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

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