簡體   English   中英

使用下拉列表更改網格中加載的表

[英]Change tables loaded in the grid with dropdownlist

我這樣做是為了自己的學習。 這不是家庭作業。 我發現的所有示例都是針對ASP解決方案的。

我在Winform中有一個網格和一個DropDownList 網格具有DataSetBindingSourceTableAdapter 我使用數據庫中的表填充下拉列表,如下所示:

public  void FillDropDownList(string connString)
    {
        String Query = "SELECT * FROM information_schema.tables where Table_Name like 'Table%'";
        using (var cn = new SqlConnection(connString))
        {
            cn.Open();
            DataTable dt = new DataTable();
            try
            {
                SqlCommand cmd = new SqlCommand(Query, cn);
                SqlDataReader myReader = cmd.ExecuteReader();
                dt.Load(myReader);
            }
            catch (SqlException e)
            {
               //to be completed
            }

            radDropDownList1.DataSource = dt;
            radDropDownList1.ValueMember = "TABLE_NAME";
            radDropDownList1.DisplayMember = "TABLE_NAME";
        }
    }

將數據加載到網格中的行如下所示:

 this.table_xxxTableAdapter.Fill(this.xxxDataSet.Table_xxx);

因此,我懷疑使用這些組件時,每個表都需要一個新的數據集,但我不喜歡這樣做,因為將來可能會創建新表。

如何更改從下拉列表中選擇表的網格中加載的表?

數據集要求您指定要在設計時加載的表,但這聽起來像是要動態加載這些表(因為它們可能會從其他來源添加到數據庫中?)

如果我正確理解了您的問題,則只需執行以下操作:

每當用戶選擇一個表時,就使用動態查詢加載所選表並將網格重新數據綁定到該表。 該代碼應如下所示。 注意:

protected void radDropDownList_OnSelectedIndexChanged(object sender, EventArgs e)
{
    DataTable dt = new DataTable();

    string query = BuildQuery(radDropDownList.SelectedValue);  //Pass in the table name
    using (var cn = new SqlConnection(connString))
    {
        cn.Open();
        try
        {
            SqlCommand cmd = new SqlCommand(query, cn);
            using (var da = new SqlDataAdapter(cmd))
            {
                ad.Fill(dt);
            }
        }
        catch (SqlException e)
        {
           //TODO: Handle this exception.
        }
    }

    radGrid.DataSource = dt;
    radGrid.DataBind();
}

private string BuildQuery(string table)
{
    //TODO:  Provide your own implementation for your query.
    return string.Format(
        @"SELECT * FROM {0}", table);
}

暫無
暫無

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

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