【问题标题】:Infragistics UltraGrid Group Changed EventInfragistics UltraGrid 组更改事件
【发布时间】:2019-02-01 17:09:49
【问题描述】:
我有一个 Infragistics UltraGrid,我需要知道用户何时添加/删除列分组。我看到当行折叠/展开时有事件,当网格的过滤器更改时有事件,但我没有看到在添加/删除列分组时会触发的任何事件。有谁知道此时会触发的 UltraGrid 事件?如果没有,我是否可以使用任何解决方法来实现此目的?
我已经尝试过使用 AfterBandHiddenChanged 和 AfterGroupPosChanged。这些似乎都不能满足我的需要。
我正在使用 Infragistics 11.2 CLR2.0(我知道它已经过时了,但我不想更新它)
【问题讨论】:
标签:
events
infragistics
ultrawingrid
【解决方案1】:
经过一番挖掘和试验,我找到了一种解决方法。这不是最漂亮的,但它完成了工作。如果有人有更好的建议,我会全力以赴。但这是我想出的,以防其他人感兴趣。
我利用网格的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
}