3

我有一个数据绑定到 DataTable 的 DataGrid(Infragistic UltraGrid)。

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

我尝试了以下方法来暂停网格更新,但它们都不起作用。可能我不太了解数据绑定的工作原理。

  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. 创建快照并覆盖网格 - 这确实是一个 hack,这是其他人建议的。我试图避免这样做。

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

谢谢

4

1 回答 1

0

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

((ISupportInitialize)Grid).BeginInit();

///
/// your code here
///

((ISupportInitialize)Grid).EndInit();
于 2011-11-29T14:53:40.213 回答