Как обеспечить отображение значков сортировки и фильтрации в сетке ag при начальной загрузке с отфильтрованными и отсортированными данными?

У меня есть приложение, которое поддерживает эти критерии сортировки и фильтрации для элемента управления ag-grid. Мы используем сортировку и фильтрацию на стороне сервера, поэтому после загрузки критериев сортировки / фильтрации данные сетки загружаются с использованием этих критериев.

При первой загрузке сетки данные строки отображаются правильно на основе сохраненных данных сортировки и фильтрации. Однако в сетке нет индикации (значков сортировки или фильтра), что сортировка / фильтр на месте. Как я могу убедиться, что они отображаются при первой загрузке данных?

Я пробовал использовать метод gridOptions.api.setFilterModel (), но если я вызываю его до загрузки данных, я получаю исключение. Если я вызываю его сразу после загрузки данных, метод вызывает перезагрузку данных и, таким образом, входит в бесконечный цикл.

Я смог установить свойство «sort» в columnDef при инициализации сетки, но не смог сделать это с данными фильтра.

Обратите внимание, что мы также используем компонент фильтра Angular 2 (реализующий AgFilterComponent), поэтому установите свойство filterFramework в columnDef.

Ура, Стюарт.


person Stuart Whiteford    schedule 08.02.2017    source источник
comment
Вы когда-нибудь находили решение этой проблемы? Я столкнулся с той же проблемой   -  person DeejC    schedule 12.06.2020


Ответы (1)


Мы делаем то же самое, и со своей стороны я вызываю метод setFilterActive при запуске, чтобы правильно инициализировать статус каждого значка фильтра.

Вот пример того, как это сделать

gridOptions.isExternalFilterPresent = () => {
    let isFilterActive = myExternalFiler.ColumnFilters.length > 0
    if (isFilterActive) {
        //used at init time to show the filter icon correctly
        for (let colFilter of myExternalFiler.ColumnFilters) {
        if (!gridOptions.columnApi.getColumn(colFilter.ColumnId).isFilterActive()) {
            gridOptions.columnApi.getColumn(colFilter.ColumnId).setFilterActive(true)
        }
        }
    }         
    return isFilterActive;
}
person Jonathan Naim    schedule 24.08.2017