2017-02-08 1 views
1

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

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

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

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

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

Cheers, Stuart.

ответ

0

Мы делаем то же самое и на моей стороне. Я вызываю метод 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; 
} 
Смежные вопросы