C# C:为新DataTable重置DataGridView

C# C:为新DataTable重置DataGridView,c#,datagridview,datasource,C#,Datagridview,Datasource,好的,我正在尝试制作一个简单的SQL CE Viewer应用程序,只是为了查看另一个应用程序的本地数据库,我已经设置好了它,这样我可以选择要打开的数据库,然后它会自动填充一个组合框,其中包含数据库中的所有表。当我选择一个表时,它用表中的记录填充DataGridView 我的问题是在桌子之间切换。我似乎无法让DataGridView删除上一个表中的所有内容,并用新表信息重新填充DataGridView。当然,每个表都有不同的列和行等等 我在谷歌上搜索了一下,发现的每一条建议似乎都不起作用。它使用第

好的,我正在尝试制作一个简单的SQL CE Viewer应用程序,只是为了查看另一个应用程序的本地数据库,我已经设置好了它,这样我可以选择要打开的数据库,然后它会自动填充一个组合框,其中包含数据库中的所有表。当我选择一个表时,它用表中的记录填充DataGridView

我的问题是在桌子之间切换。我似乎无法让DataGridView删除上一个表中的所有内容,并用新表信息重新填充DataGridView。当然,每个表都有不同的列和行等等

我在谷歌上搜索了一下,发现的每一条建议似乎都不起作用。它使用第一个表来填充DataGridView,但当我选择另一个表时,它基本上会将列和行添加到任何表中

如何使DataGridView完全清除新数据


请不要告诉我使用dataGridView1.DataSource=null;试过了,不起作用。

在用新数据填充数据源后写这一行

dataGridView1.Refresh();

您不需要直接清除DataGridView。它总是通过修改DataGridView的数据源来处理。

如果表单中没有其他内容,只需再次调用InitializeComponent即可。但是我认为@Josh是对的。

好吧,我在我的一个程序中检查了它,仅仅更改DataSource属性就可以了。我不必使用datagridview.Refresh。可能这取决于用于设置datagridview数据的数据源类型?

conn=newSqlCeConnection@DataSource=+fixFilePath;使用conn{conn.Open;command=new-SqlCeCommandSELECT*FROM+tableName,conn;daDataGridView=new-SqlCeDataAdaptercommand;daDataGridView.FilldtDataGridView;bsDataGridView.DataSource=dtDataGridView;dataGridView1.DataSource=bsDataGridView;}我不确定,但您的问题可能会发生,因为您在为datatable设置新表之前并没有清除datatable。单个数据表上的多重填充方法很可能是将新行追加到现有行。如果你还没试过,你可以看看这个。正如我所说的,我不是100%确定,现在我自己也无法检查这一点。您也可以尝试使用DataSet,然后将新的选定表作为DataTables添加到其中。我已经让它工作了。。。。只需要移动DataTable=new DT和BindingSource=new BS并添加dataGridView.Refresh到dataGridSetup方法的顶部,然后再设置dataGridView。谢谢