ag-сетка обновляет фильтр столбцов после начальной загрузки

#ag-grid

#ag-сетка

Вопрос:

Согласно https://www.ag-grid.com/javascript-grid-filter-set /, «Сетка не обновляет фильтры для вас, поскольку существует слишком много вариантов использования …», #согласовано.

Я использую источник данных на стороне сервера с бесконечной подкачкой, запрашивающий большой набор данных. Хотя во время начальной загрузки я могу быть уверен, что фильтр перечисляет все доступные «варианты», я надеюсь найти решение для «перезагрузки» фильтра с некоторой частотой / событием, чтобы быть уверенным.

Я пытаюсь использовать resetFilterValues() метод объекта, возвращаемый вызовом gridOptions.api.getFilterInstance(id) .

При использовании источника данных на стороне сервера я получаю следующую консоль.вывод ошибки:

ag-Grid: Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values (Source ag-grid-enterprise.min.js:555

Примечание: Метод values с асинхронной загрузкой значений работает великолепно и написан в соответствии с рекомендациями, например, обратный вызов params.success со значениями.

Я загружаю варианты фильтра в заголовок столбца, используя следующий подход:

 {
    headerName: 'Something',
    field: 'SOMETHING',
    width: 200,
    suppressMenu: false,
    suppressFilter: false,
    filter: 'agSetColumnFilter',
    filterParams: {
        values: function (params) {
            someAsyncMethodReturningAPIResultsAsArray();
        }
        newRowsAction: 'keep'
    },
    menuTabs: ['filterMenuTab']
}
  

Затем я пытаюсь перезагрузить фильтры позже (например, при нажатии кнопки за пределами сетки), используя следующий код:

 var filter = gridOptions.api.getFilterInstance(id);
filter.resetFilterValues();
  

Этот код приводит к ошибке, описанной выше.

Вопрос: Кто-нибудь знает, как настроить Set Model для возврата строк, как описано в сообщении об ошибке? Есть ли лучший способ решения этой проблемы, с которым кто-либо сталкивался?

Спасибо

Комментарии:

1. Вы нашли способ обновить (перезагрузить) фильтры? Я пытаюсь выяснить то же самое

2. К сожалению, нет. Похоже, этот элемент тоже отошел на второй план. В итоге я запустил свой собственный пользовательский фильтр и стал владельцем всего потока от начала до конца. К сожалению, я вообще не использовал их встроенные фильтры. Рад поделиться общим кодом, если это будет полезно, просто напишите мне в личку

3. @Pepto Я борюсь с этой же проблемой. Не могли бы вы, пожалуйста, поделиться своим пользовательским фильтром в отношении этой проблемы? Это окажет большую помощь. Заранее благодарю вас!

Ответ №1:

Приведенный ниже код может быть выполнен в postProcessPopup обратном вызове, и он будет вызывать values() функцию, определенную в filterParams , при каждом открытии всплывающего окна

 var filter = gridOptions.api.getFilterInstance(id);
filter.refreshFilterValues();
  

Примечание: refreshFilterValues Функция выполняет свою задачу здесь. Он доступен в версии 24 и выше. Не слишком уверен в старых версиях.

Комментарии:

1. filter.refreshFilterValues(); работает ли для пользовательских фильтров?