使用下拉列表更改网格中加载的表
本文关键字:加载 网格 下拉列表 | 更新日期: 2023-09-27 18:27:13
我这样做是为了自己的学习。这不是在家工作。我找到的所有示例都是针对asp解决方案的。
我有一个网格和Winform中的下拉列表。网格具有数据集绑定源和表适配器。我用DB中的表填充dropdownlist,如下所示:
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);
}