Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除数据集中的表,然后添加具有相同名称的新表?(C#-Winforms)_C#_Winforms_Ado.net - Fatal编程技术网

如何删除数据集中的表,然后添加具有相同名称的新表?(C#-Winforms)

如何删除数据集中的表,然后添加具有相同名称的新表?(C#-Winforms),c#,winforms,ado.net,C#,Winforms,Ado.net,首次加载表单时,我使用SqlDataAdapter.Fill将表添加到数据集中 this.bus_SqlDataAdapter.SelectCommand.CommandText = "select * from Bus" this.bus_SqlDataAdapter.Fill(this.bus_DataSet, "Bus"); this.bus_DataGridView.DataSource = this.bus_DataSet; this.bus_DataGridView.DataMemb

首次加载表单时,我使用SqlDataAdapter.Fill将表添加到数据集中

this.bus_SqlDataAdapter.SelectCommand.CommandText = "select * from Bus"
this.bus_SqlDataAdapter.Fill(this.bus_DataSet, "Bus");
this.bus_DataGridView.DataSource = this.bus_DataSet;
this.bus_DataGridView.DataMember = "Bus";
然后我使用一个按钮来更改查询并更新总线表:

this.bus_SqlDataAdapter.SelectCommand.CommandText = "select * from Bus where ID = 1"
try
{
        this.bus_DataSet.Tables.Remove("Bus");
}
catch
{
        //Don't do anything
}
finally
{
        this.bus_SqlDataAdapter.Fill(this.bus_DataSet, "Bus");
}
但DataGridView中的数据保持不变。
发生了什么以及如何修复它?

再次重置数据源属性应该可以做到:

this.bus_DataGridView.DataSource = this.bus_DataSet;

您的数据集是否未被提取?或者DataGridView没有反映更新的数据源?如何检查?但我认为数据集是个问题,因为当我在Finally block中将表名更改为Bus2,并将DataGridView的DataMember更改为Bus2时,它会按预期工作。从数据集中删除表可能不会从网格视图中“删除”它(表对象仍然存在于内存中,只是没有被数据集引用)。我认为您应该能够清除表,将其保留在原位,并让select命令填充现有表。我已经有一段时间没有进行WinForms数据绑定了,但是您可能需要调用一些命令,如“DataBind()”等,以便刷新网格视图。在任何情况下,通过保留现有表,网格视图的数据源和成员关联将保持不变。您可能必须首先将数据源切换为null。我不知所措。您应该能够调试并查看发生了什么。见此:
if(SomeCondition)
{
 this.bus_SqlDataAdapter.SelectCommand.CommandText = "select * from Bus"
}
else
{
 this.bus_SqlDataAdapter.SelectCommand.CommandText = "select * from Bus  where ID = 1"
}
this.bus_SqlDataAdapter.Fill(this.bus_DataSet, "Bus");
this.bus_DataGridView.DataSource = this.bus_DataSet;
this.bus_DataGridView.DataMember = "Bus";