Инфраструктура UltraGrid Group изменила событие - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть Infragistics UltraGrid, и мне нужно знать, когда пользователь добавляет / удаляет группировку столбцов.Я вижу, что есть события, когда строка свернута / развернута, и событие, когда фильтр сетки изменяется, но я не вижу событий, которые сработали бы при добавлении / удалении группировки столбцов.Кто-нибудь знает о событии UltraGrid, которое произойдет в этот момент?Если нет, есть ли какие-нибудь обходные пути, которые я мог бы использовать для достижения этой цели?

Я уже пробовал использовать AfterBandHiddenChanged и AfterGroupPosChanged.Похоже, ни один из них не делает то, что мне нужно.

Я использую Infragistics 11.2 CLR2.0 (я знаю, что она устарела, но я не призываю ее обновить)

1 Ответ

0 голосов
/ 02 февраля 2019

После некоторых копаний и экспериментов я нашел обходной путь.Это не самая красивая, но она выполняет свою работу.Если у кого-нибудь есть предложения получше, я весь в ушах.Но вот что я придумала на тот случай, если кому-то еще это интересно.

Я использую события сетки BeforeSortChanged и AfterSortChanged.Событие «До» устанавливает флаг, чтобы указать, изменились ли группировки.Событие «После» - это то, где я выполняю операцию, которую мне нужно выполнить, если установлен флаг, указывающий, что группировки изменились.

Вот событие «До»:

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
}
...