编辑基础DataTable时推迟DataGridView更新

xyz*_*xyz 9 .net c# ado.net datagridview winforms

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

..并且从代码对基础DataTable中的行执行许多编辑.

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

实际上,DataGridView在每次编辑后都会更新,如果您不需要即时反馈,那么如果您一个接一个地更新DataTable中的许多行,那么效率很低,并且会有一些视觉冲突.

Jul*_*lin 16

为了能够临时暂停数据绑定,您必须BindingSource在您DataGridView和您之间放置一个DataView.通过将RaiseListChangedEvents属性设置BindingSource为false,不会将基础源中的更改通知给DataGridView.您可以Bindingsource在设计视图中从工具箱中拖放组件.我试图通过设计器设置数据源,但它不起作用,所以我在代码中做到了:

bindingSource1.DataSource = someDataTable.DefaultView;
dataGridView1.DataSource = bindingSource1;
Run Code Online (Sandbox Code Playgroud)

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

bindingSource1.RaiseListChangedEvents = false;
Run Code Online (Sandbox Code Playgroud)

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

bindingSource1.RaiseListChangedEvents = true;
bindingSource1.ResetBindings(false);
Run Code Online (Sandbox Code Playgroud)