C#-删除行后如何刷新DataGridView
在我的代码中,我需要在重复间隔后从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();
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中删除所有要删除的项目后调用Update一次以提交更改。此代码可能很有用:
dataGridView.DataSource = null;
dataGridView.Update();
dataGridView.Refresh();
dataGridView.DataSource = SomeDataSource;
希望这有帮助。DataGridView是winforms控件,因此不需要数据绑定。如果是ASP.NET,在他的示例中,删除行不会影响数据源。因此,这样做将使gridview在删除数据之前显示相同的数据。抱歉,对此不熟悉(新手)。你能把范围扩大一点吗?谢谢。嗨,如果你编辑了你的帖子并添加了一些关于你是如何填充数据源的信息,那么也许我可以帮你一些提示。干杯