Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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#-删除行后如何刷新DataGridView_C#_Winforms_Datagridview_Refresh_Populate - Fatal编程技术网

C#-删除行后如何刷新DataGridView

C#-删除行后如何刷新DataGridView,c#,winforms,datagridview,refresh,populate,C#,Winforms,Datagridview,Refresh,Populate,在我的代码中,我需要在重复间隔后从DataGridView中删除行,因此当计时器过期时,我调用以下函数: private void removeRows(DataGridView dgv) { foreach (DataGridViewRow row in dgv.Rows) { // if some condition holds dgv.Remove(row); } dgv.Refresh();

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

private void removeRows(DataGridView dgv) {

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

}

我知道这些行已成功地从DataGridView中删除,尽管出于任何原因,它们仍保留在显示中。有关于我可能做错什么的提示吗?

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

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

如果是数据绑定网格,则应处理绑定源本身而不是网格。

如果已将数据网格绑定到可观察的集合(如果不是,则应),则需要实现INotifyCollectionChanged接口,以便将动态更改通知侦听器,例如,添加和删除项目或刷新整个列表时


HTH

有时刷新数据gridview是不够的,它包含的父级也应该刷新

试试这个:

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

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

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

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

  • 使用DGV的DataGridViewRowCollection,而不是DataTable的DataRowCollection。DataGridViewRow具有Selected属性,该属性指示是否选中某一行

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

  • 请注意,此时,尽管该项已从DGV中删除,但尚未从Access DB中删除。您需要在DataSet/DataTable上调用TableAdapter更新方法,以将删除提交给DB,例如YerTableAdapter.Update(YerDataSet)


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

    此代码可能很有用:

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

    希望这有帮助。

    DataGridView是winforms控件,因此不需要数据绑定。如果是ASP.NET,在他的示例中,删除行不会影响数据源。因此,这样做将使gridview在删除数据之前显示相同的数据。抱歉,对此不熟悉(新手)。你能把范围扩大一点吗?谢谢。嗨,如果你编辑了你的帖子并添加了一些关于你是如何填充数据源的信息,那么也许我可以帮你一些提示。干杯