#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();
работает ли для пользовательских фильтров?