Infragistics UltraGrid组更改事件

时间:2019-02-01 17:09:49

标签: events infragistics ultragrid

我有一个Infragistics UltraGrid,我需要知道用户何时添加/删除列分组。我看到有行折叠/展开时的事件,以及网格过滤器更改时的事件,但是我看不到添加/删除列分组时会触发的任何事件。有人知道那时会触发的UltraGrid事件吗?如果没有,我是否可以使用任何解决方法来实现这一目标?

我已经尝试使用AfterBandHiddenChanged和AfterGroupPosChanged。那些似乎都不能满足我的需求。

我正在使用Infragistics 11.2 CLR2.0(我知道它已经过时了,但这不是我的更新请求)

1 个答案:

答案 0 :(得分:0)

经过一些探索和实验,我找到了一种解决方法。它不是最漂亮的,但是可以完成工作。如果有人有更好的建议,我会很高兴。但这里是我想出了的情况下,其他人有兴趣。

我利用了网格的BeforeSortChangedAfterSortChanged事件。 “之前”事件设置一个标志,以指示分组是否已更改。如果设置了标志以指示分组已更改,则执行“ 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
}