c# - 编辑底层 DataTable 时延迟 DataGridView 更新

标签 c# .net winforms ado.net datagridview

如果您有一个绑定(bind)到 DataView (someDataTable.DefaultView) 的 DataGridView。

..并通过代码对底层 DataTable 中的行执行了一些编辑。

是否可以推迟 DataGridView 的更新,直到您决定完成对行的编辑?

事实上,DataGridView 在每次编辑后都会更新,如果您不需要即时反馈,那么如果您一个接一个地更新 DataTable 中的许多行,这将是低效的并且在视觉上有点不协调。

最佳答案

为了能够暂时中止数据绑定(bind),您必须输入 BindingSource在您的 DataGridView 和您的 DataView 之间。通过将 BindingSourceRaiseListChangedEvents 属性设置为 false,底层源中的更改不会通知到 DataGridView。您可以从设计 View 的工具箱中拖放一个 Bindingsource 组件。我尝试通过设计器设置数据源,但没有用,所以我用代码实现了:

bindingSource1.DataSource = someDataTable.DefaultView;
dataGridView1.DataSource = bindingSource1;

要暂停数据绑定(bind),只需将 RaiseListChangedEvents 属性设置为 false:

bindingSource1.RaiseListChangedEvents = false;

要恢复数据绑定(bind),只需将 RaiseListChangedEvents 设置为 true 并重置绑定(bind)以便更新显示:

bindingSource1.RaiseListChangedEvents = true;
bindingSource1.ResetBindings(false);

关于c# - 编辑底层 DataTable 时延迟 DataGridView 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1132818/

相关文章:

winforms - 表格立即关闭

.net - 数据库中立的 .NET 应用程序

.net - C# 中使用 Task 和 Task<TResult> 有什么区别

winforms - 在 Infragistics UltraGrid 中为选定行上有错误的单元格设置背景

c# - 强制事件处理程序在对象的线程上运行,C# .NET

.net - RoutedCommand和RoutedUICommand有什么区别?

winforms - 相同的字体在高 DPI 显示器上看起来并不相同

c# - 我是在更改我的类(class)的一个字段时设置引用的值,还是只是设置一个值的值?

c# - 在 C# 中轻松读取 Excel?

c# - Microsoft Azure Web App - ASP.NET 无权访问请求的资源