.net 行添加/删除事件?(基础设施温格里德)

.net 行添加/删除事件?(基础设施温格里德),.net,winforms,infragistics,.net,Winforms,Infragistics,我需要更新WinGrid(WinForms项目)附近标签上的行数 网格更新以不同的方式进行-数据源更改、手动添加/删除、sql初始化等 网格更改行号时是否会引发通用事件(包括数据源更改)?根据我的经验,行号更改时不会调用全局事件。 对此,我的最佳解决方案是一个通用方法,它将从各种事件中调用,这些事件可能会修改显示行的数量 像这样的 private void UpdateRowsCount(UltraGrid grd, string messageFmt = "Rows count: {0}")

我需要更新WinGrid(WinForms项目)附近标签上的行数

网格更新以不同的方式进行-数据源更改、手动添加/删除、sql初始化等


网格更改行号时是否会引发通用事件(包括数据源更改)?

根据我的经验,行号更改时不会调用全局事件。
对此,我的最佳解决方案是一个通用方法,它将从各种事件中调用,这些事件可能会修改显示行的数量

像这样的

private void UpdateRowsCount(UltraGrid grd, string messageFmt = "Rows count: {0}")
{
    labelRowCount.Text = string.Format(messageFmt, grd.Rows.FilteredInRowCount);
}
然后是应处理的事件:

  • grd_AfterRowFilterChanged//如果启用了筛选,请不要忘记这一点
  • grd_后行已删除
  • grd_后行插入件
当然,在设置数据源之后

 grd.DataSource = myDataTable;
 this.UpdateRowsCount(grd, "Customers count: {0}");

如果有人对这个问题有更好的了解,我会对另一种方法非常感兴趣。

我假设您绑定到一个具有更改通知的列表,如BindingList或DataSet/DataTable。如果将项添加到数据源中,并且它们显示在网格中,则必须是这样,因为网格依赖数据源中的事件来知道它需要更新

在这种情况下,您可以绑定到网格绑定到的列表的ListChanged事件。本次活动是活动的一部分

如果要绑定到DataTable/DataSet,则需要使用DataTable的DefaultView公开的事件,因为这是实现IBindingList和网格实际绑定的内容


如果您使用的集合实现了INotifyCollectionChanged而不是IBindingList,那么您将使用CollectionChanged事件。如果您正在进行WPF开发,则更可能出现这种情况,因为这是ObservableCollection用于更改通知的内容。

最后,我手动确定了将行添加到网格的位置,并相应地更新了Core的计数标签


所以,我没有使用网格事件。

不幸的是,当数据源更改时,或者当手动添加行(Grid.rows.Add(…)时,“AfterRowInsert”不会被触发。Infrastics论坛上有一个有趣的关于AfterRowInsert未被触发的线程。希望能有帮助。如果网格显示来自数据源的更改,那么网格绑定到的列表将有更改通知,您可以使用相关事件。对于实现IBindingList的列表,它是ListChanged事件。我在另一个答案中提供了更多的细节。对于过滤操作也是如此?如果您使用过滤,那么在这种情况下不会更新,因为数据源没有更改。如果这是一个要求,那么您可以使用ListChanged事件和grids AfterRowFilterChanged事件,然后从每个事件调用一个方法来更新标签