如何挂起DataTable通知或数据绑定以防止UI更新

我得到了一个数据连接到DataTable的DataGrid(Infragistic UltraGrid)。

我想在用户单击按钮之前更新DataTable而不显示数据网格上的任何更改。

我已经尝试了以下方法来暂停网格udpate,但它们都不起作用。 可能我真的不明白数据绑定是如何工作的。

  1. ultraGrid.BeginUpdate() – 这是特定于ultraGrid的方法,可以阻止绘制网格。 适用于Aero主题,但如果您在窗口上使用“经典”主题,则网格不会自绘制,因为绘画已暂停。

  2. BindingSource.SuspendBinding() – 这只是暂停UI更改到底层源,而不是其他方面

  3. BindingSource.RaiseListChangedEvent = false – 尝试将其设置为false,但网格仍然自行更新。

  4. Grid.BindingContext = new BindingContext() – 试图查看是否可以删除任何底层绑定以防止网格上的更新。 这根本不起作用,不知道如何使用它

其他想法:

  1. ultraGrid.SetDataBinding(null, null) – 它基本上删除了网格上不是我想要的所有信息。

  2. 创建快照并覆盖网格 – 这实际上是一个黑客,这是其他人建议的。 我试图避免做这样的黑客攻击。

请注意,在网格更新期间,用户无法访问网格,因为打开了模态窗口。 用户通过此模式窗口更新数据表。 我们的想法是,当用户单击“确定”按钮时,他们将看到网格中的更改。

谢谢

我知道完全抑制DataSource更改的任何活动的唯一方法是使用UltraGrid实现的ISupportInitialize接口:

 ((ISupportInitialize)Grid).BeginInit(); /// /// your code here /// ((ISupportInitialize)Grid).EndInit();