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