【问题标题】:C# : Resetting DataGridView for new DataTableC#:为新的 DataTable 重置 DataGridView
【发布时间】:2013-07-11 02:38:42
【问题描述】:

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

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

我在这里用谷歌搜索和搜索过,我发现的每一个建议似乎都不起作用。它用第一个表填充 DataGridView 就好了,但是当我选择另一个时,它基本上将列和行添加到那里的任何内容中......

如何让 DataGridView 完全清除新数据?

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

【问题讨论】:

    标签: c# datagridview datasource


    【解决方案1】:

    用新数据填充DataSource 后写下这一行

    dataGridView1.Refresh();
    

    您无需直接清除DataGridView。它总是通过修改DataGridViewDataSource 来处理。

    【讨论】:

      【解决方案2】:

      如果表格中没有其他内容,您只需再次致电InitializeComponent()。但我认为@Josh 是对的。

      【讨论】:

        【解决方案3】:

        好吧,我在我的一个程序中检查了它,只是更改 DataSource 属性工作正常。我不必使用 datagridview.Refresh()。也许这取决于您用来设置 datagridview 数据的 DataSource 的类型?

        【讨论】:

        • conn = new SqlCeConnection(@"Data Source = " + fixFilePath); using (conn) { conn.Open(); command = new SqlCeCommand("SELECT * FROM " + tableName, conn); daDataGridView = new SqlCeDataAdapter(command); daDataGridView.Fill(dtDataGridView); bsDataGridView.DataSource = dtDataGridView; dataGridView1.DataSource = bsDataGridView; }
        • 我不确定,但可能会出现您的问题,因为您在设置新表之前没有清理数据表。单个 DataTable 上的 Multiple Fill 方法很可能是将新行附加到现有行。如果你还没有尝试过,你可以看看这个。正如我所说,我不能 100% 确定,现在也不能自己检查。您也可以尝试使用 DataSet,然后将新选定的表作为 DataTables 添加到其中。
        • 我得到了它的工作......只需要移动 DataTable = new DT 和 BindingSource = new BS 并将 dataGridView.Refresh() 添加到 dataGridSetup() 方法的顶部就在它之前设置dataGridView。谢谢。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多