我有一个Infragistics UltraGrid,我需要知道用户何时添加/删除列分组。我看到有行折叠/展开时的事件,以及网格过滤器更改时的事件,但是我看不到添加/删除列分组时会触发的任何事件。有人知道那时会触发的UltraGrid事件吗?如果没有,我是否可以使用任何解决方法来实现这一目标?
我已经尝试使用AfterBandHiddenChanged和AfterGroupPosChanged。那些似乎都不能满足我的需求。
我正在使用Infragistics 11.2 CLR2.0(我知道它已经过时了,但这不是我的更新请求)
答案 0 :(得分:0)
经过一些探索和实验,我找到了一种解决方法。它不是最漂亮的,但是可以完成工作。如果有人有更好的建议,我会很高兴。但这里是我想出了的情况下,其他人有兴趣。
我利用了网格的BeforeSortChanged
和AfterSortChanged
事件。 “之前”事件设置一个标志,以指示分组是否已更改。如果设置了标志以指示分组已更改,则执行“ After”事件时需要执行的操作。
这是“之前”事件:
private void Grid_BeforeSortChange(object sender, Infragistics.Win.UltraWinGrid.BeforeSortChangeEventArgs e) {
int preSort = 0;
int postSort = 0;
// This set of sorted columns are the columns that were already sorted
// before the sort change.
foreach (var col in e.Band.SortedColumns) {
if (col.IsGroupByColumn) {
preSort++;
}
}
// This set of sorted columns are the columns that will be
// sorted after the sort change is applied
foreach (var col in e.SortedColumns) {
if (col.IsGroupByColumn) {
postSort++;
}
}
// Compare the number of grouped columns before the
// sort to the number after the sort
_groupingsChangedFlag = preSort != postSort
}
这是“之后”事件:
private void Grid_AfterSortChange(object sender, Infragistics.Win.UltraWinGrid.BandEventArgs e) {
if (!_groupingsChangedFlag) {
return;
}
// Groupings changed, so do some action
}