簡體   English   中英

從數據庫,C#填充ComboBox和CheckedListBox

[英]Populating ComboBox and CheckedListBox from Database, C#

好的,正如標題所述,我正在嘗試從數據庫填充組合框,然后根據組合框的更改來更改清單列表的內容。 這里的問題是,我正盡我所能。 我決定使用一個訪問數據庫(db1.mdb,與exe位於同一目錄)。 主數據表Table1具有組合框中應包含的項目的名稱(item1,item2,item3)。 然后,我為每個值(tableitem1,tableitem2,tableitem3)有單獨的表,並且列表框將一次使用這些表,列出“項目名稱”字段,其中每個表中的金額都有變化。 選中清單列表中的選項后,我需要從與清單列表框關聯的數據庫表中獲取該表“ value1和value2”中其他列的值。 我已經進行了大約5年的編程,但是之前從未需要操縱數據庫,所以我完全迷失了。

我在這里找到了更多圍繞更多線程的良好代碼和建議。 顯然,我的主要問題是表名中的空格,因此我刪除了表和代碼中的空格。 此代碼可將正確的值加載到組合框和復選框列表框中。 現在,我只需要從與已檢查列表相對應的行中加載值,然后將2個不同列中的值加載到2個不同字符串數組中即可。 這是我第一次使用數據庫,因此我對系統如何解釋我寫的內容迷失了。

    private OleDbConnection myConn;
    private OleDbDataAdapter dAdapter;
    private DataViewManager dviewmanager;
    private DataSet dset;

    private OleDbConnection myConn2;
    private OleDbDataAdapter dAdapter2;
    private DataViewManager dviewmanager2;
    private DataSet dset2;

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

        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.cmbMain.DataSource = this.dviewmanager;

        this.cmbMain.DisplayMember = "Index.List";

        this.myConn.Close();
    }

    private void cmbMain_SelectedIndexChanged(object sender, EventArgs e)
    {
        clbDatabaseFill();
    }

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

        string conStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DB1.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.clbOpt.DataSource = this.dviewmanager2;

        this.clbOpt.DisplayMember = newTableName + ".ValName";

        this.myConn2.Close();
    }

暫無
暫無

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

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