Я использую dojox.grid.DataGrid для отображения данных и позволяю пользователю выбирать одну или несколько строк, чтобы выделить элементы для выполнения других действий.
Моя проблема в том, что сетка использует индексы для запоминания выбранных строк. Если я включил clientSort, сортировка строк приводит к изменению порядка строк, но выбор изменяется на строки, которые теперь занимают индексы выбора перед сортировкой.
Чтобы бороться с этим, я получаю элементы для выбранных строк при каждом изменении выбора, а затем, когда происходит событие onSort, я использую getItemIndex(item) для каждого из элементов в моей коллекции выбранных элементов, чтобы получить новые индексы строк, и я повторно выбираю, используя эти индексы.
Теперь моя проблема заключается в том, что DataGrid загружает данные по определенному количеству строк за раз (он использует термин «страница» для определения заданного количества строк) для повышения производительности. Когда происходит сортировка, данные перезагружаются в новом порядке сортировки, но только до значения rowsPerPage (по умолчанию 40). Когда я пытаюсь использовать getItemIndex для элемента, новая строка которого не была загружена в сетку, он возвращает и индекс -1. Функция getItemIndex() возвращает индекс только после того, как пользователь прокрутит страницу вниз и загрузит строку.
Я не могу найти событие, которое срабатывает при загрузке страницы, чтобы попытаться восстановить выделение. Я просмотрел исходный код 1.3.2 и ничего не нашел. Я пытался подключиться к ряду частных функций, но ни одна из них не работает.
Кто-нибудь сталкивался с этим и нашел решение?
Заранее спасибо.