[英]Change tables loaded in the grid with dropdownlist
我這樣做是為了自己的學習。 這不是家庭作業。 我發現的所有示例都是針對ASP解決方案的。
我在Winform中有一個網格和一個DropDownList 。 網格具有DataSet , BindingSource和TableAdapter 。 我使用數據庫中的表填充下拉列表,如下所示:
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.