【问题标题】:C# - how do I refresh DataGridView after removing rowsC# - 删除行后如何刷新 DataGridView
【发布时间】:2010-12-06 08:14:19
【问题描述】:

在我的代码中,我需要在重复间隔后从 DataGridView 中删除行,因此我在计时器到期时调用以下函数:

private void removeRows(DataGridView dgv) {

    foreach (DataGridViewRow row in dgv.Rows)
    {
        // if some condition holds
        dgv.Remove(row);                
    }
    dgv.Refresh();

}

我知道这些行已成功从 DataGridView 中删除,但无论出于何种原因它们仍保留在显示中。关于我可能做错的任何提示?

【问题讨论】:

    标签: c# winforms datagridview refresh populate


    【解决方案1】:

    不需要重新绑定数据网格吗?

    dgrv.Datasource = [whatever data source];
    dgrv.DataBind();
    

    ?

    【讨论】:

    • DataGridView 是一个 winforms 控件,因此不需要数据绑定。如果是 ASP .NET,在他的示例中删除行不会影响数据源。因此,这样做会使 gridview 在删除它们之前显示相同的数据。
    【解决方案2】:

    有时刷新数据网格视图是不够的,它的包含父视图也应该刷新。

    试试这个:

    dgv.Refresh(); // Make sure this comes first
    dgv.Parent.Refresh(); // Make sure this comes second
    

    您还可以编辑源并将新数据源附加到控件。

    【讨论】:

      【解决方案3】:

      如果您已将数据网格绑定到 Observable Collection(如果没有,那么您应该),那么您将需要实现 INotifyCollectionChanged 接口,以便侦听器收到动态更改的通知,例如添加和删除项目或整个列表时刷新。

      HTH

      【讨论】:

      • 对不起,不熟悉(c#新手)。你能扩大一点吗?谢谢。
      • 您好,如果您编辑帖子并添加一些有关如何填充数据源的信息,那么我可以为您提供一些指导。干杯。
      【解决方案4】:

      如果我的理解正确,您想从 DGV 中删除用户选择的行。

      1. 使用 DGV 的 DataGridViewRowCollection 而不是 DataTable 的 DataRowCollection。 DataGridViewRow 具有 Selected 属性,该属性指示是否选择了一行。

      2. 一旦确定要删除一行,就可以使用 DataGridViewRowCollection 的 Remove 方法从网格中删除该项目,例如YerDataGridView.Rows.Remove(row)

      3. 请注意,此时,虽然该项目已从 DGV 中删除,但仍未从 Access DB 中删除。您需要在 DataSet/DataTable 上调用 TableAdapter Update 方法以将删除提交到数据库,例如YerTableAdapter.Update(YerDataSet)

      我通常会在从 DGV 中删除所有要删除的项目后调用一次更新以提交更改。

      【讨论】:

        【解决方案5】:

        这段代码可能很有用:

        dataGridView.DataSource = null;
        dataGridView.Update();
        dataGridView.Refresh();
        dataGridView.DataSource = SomeDataSource;
        

        希望这会有所帮助。

        【讨论】:

          【解决方案6】:

          如果是数据绑定网格,您应该使用绑定源本身而不是网格。

          【讨论】:

            【解决方案7】:

            尝试从绑定源中删除实际项目。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-09-04
              • 1970-01-01
              • 2010-11-28
              • 1970-01-01
              • 2012-04-27
              相关资源
              最近更新 更多