Обработка длительной сортировки в ag-grid (чистый JS)

Я работаю с большим объемом данных (1–5 млн), и строки в сетке должны быть группируемыми, сортируемыми и фильтруемыми. Поскольку ag-grid может достаточно быстро заполнять таблицу данными, я использую строковую модель в памяти для удовлетворения требований.

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

Есть ли способы запретить пользователю нажимать на столбцы (отключить сортировку, показать наложение загрузки или что-то в этом роде)?

Я пытаюсь использовать события beforeSortChanged и afterSortChanged для отображения наложения или изменения элементов DOM (чтобы сделать сетку немного серой и показать круг загрузки), но это не работает должным образом: обработчик события beforeSortChanged на мгновение застревает, а затем только исполняется.

Ag-grid используется внутри фреймворка Ember как компонент.


person Leonti Brechko    schedule 21.09.2016    source источник
comment
На самом деле кажется, что сортировка выполняется за короткое время, но затем ag-grid обновляет свое представление, что заставляет веб-страницу ждать этого.   -  person Leonti Brechko    schedule 21.09.2016


Ответы (1)


Как насчет использования onCellClicked, который является атрибутом columnDefs . Должен работать аналогично тому, что вы ищете, с beforeSortChanged.

person Jarod Moser    schedule 21.09.2016
comment
Спасибо за ответ. Я пробовал этот способ, но он не запускает событие, когда я нажимаю на заголовок столбца. - person Leonti Brechko; 21.09.2016
comment
Ах да, неудивительно, что я не мог заставить его работать, ха-ха. В этом случае вы можете использовать headerCellTemplate, а затем поместите туда событие onclick, которое будет запускаться при каждом щелчке по заголовку. Я сам использовал это, чтобы настроить значок для переключения закрепления. - person Jarod Moser; 21.09.2016
comment
Это работает, но все та же проблема: сначала нужно дождаться завершения сортировки, и только потом обработчик запускается. - person Leonti Brechko; 21.09.2016