我需要在WinGrid(WinForms项目)附近的标签上更新行计数。
网格更新以不同的方式进行 - 数据源更改,手动添加/删除,sql初始化等。
当Grid更改行号(包括数据源更改)时是否引发了通用事件?
答案 0 :(得分:1)
我假设您绑定到具有BindingList或DataSet / DataTable等更改通知的列表。如果您向数据源添加项目并且它们显示在网格中,因为网格依赖于来自数据源的事件以确定它需要更新,则必须如此。
在这种情况下,您可以绑定到网格绑定到的列表的ListChanged事件。此活动是IBindingList interface的一部分。
如果您绑定到DataTable / DataSet,那么您将需要使用DataTable的DefaultView公开的事件,因为这是实现IBindingList以及网格实际绑定的内容。
如果您使用的是实现INotifyCollectionChanged而非IBindingList的集合,那么您将使用CollectionChanged事件。如果您正在进行WPF开发,这将更有可能,因为这是ObservableCollection用于更改通知的内容。
答案 1 :(得分:0)
根据我的经验,当行号发生变化时,不会调用全局事件 我最好的解决方案是从可以修改显示行数的各种事件中调用的通用方法。
像这样的东西
private void UpdateRowsCount(UltraGrid grd, string messageFmt = "Rows count: {0}")
{
labelRowCount.Text = string.Format(messageFmt, grd.Rows.FilteredInRowCount);
}
然后应该处理的事件:
,当然,在设置数据源之后。
grd.DataSource = myDataTable;
this.UpdateRowsCount(grd, "Customers count: {0}");
如果有人对问题有更好的了解,我会对不同的方法非常感兴趣。
答案 2 :(得分:0)
最后,我手动识别我将行添加到网格的位置,并相应地更新计数标签。
所以,我没有使用过Grid事件。