dojox.grid.DataGrid - Поддержка выбора строк при сортировке и разбиении на страницы - PullRequest
1 голос
/ 27 октября 2010

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 28 октября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...