dojox.grid.DataGrid — сохранение выделения строк при сортировке и разбиении по страницам

Я использую dojox.grid.DataGrid для отображения данных и позволяю пользователю выбирать одну или несколько строк, чтобы выделить элементы для выполнения других действий.

Моя проблема в том, что сетка использует индексы для запоминания выбранных строк. Если я включил clientSort, сортировка строк приводит к изменению порядка строк, но выбор изменяется на строки, которые теперь занимают индексы выбора перед сортировкой.

Чтобы бороться с этим, я получаю элементы для выбранных строк при каждом изменении выбора, а затем, когда происходит событие onSort, я использую getItemIndex(item) для каждого из элементов в моей коллекции выбранных элементов, чтобы получить новые индексы строк, и я повторно выбираю, используя эти индексы.

Теперь моя проблема заключается в том, что DataGrid загружает данные по определенному количеству строк за раз (он использует термин «страница» для определения заданного количества строк) для повышения производительности. Когда происходит сортировка, данные перезагружаются в новом порядке сортировки, но только до значения rowsPerPage (по умолчанию 40). Когда я пытаюсь использовать getItemIndex для элемента, новая строка которого не была загружена в сетку, он возвращает и индекс -1. Функция getItemIndex() возвращает индекс только после того, как пользователь прокрутит страницу вниз и загрузит строку.

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

Кто-нибудь сталкивался с этим и нашел решение?

Заранее спасибо.


person MrGFunk    schedule 27.10.2010    source источник


Ответы (1)


Я нашел ответ. В dojox.grid.DataGrid есть закрытое событие (_onFetchComplete), которое срабатывает каждый раз, когда запрашивается следующая страница. Я использую setTimeout для запуска функции восстановления через 300 секунд.

Работа выполнена!

person MrGFunk    schedule 28.10.2010