У меня проблема с виджетами AdvancedDataGrid. Когда DataProvider является ArrayCollection (массивов), п-й массив (в коллекции) также п-й строки в сетке, и я могу прыгать и отображать I-й строки с помощью сценариевAdvancedDataGrid (группировка) быстрый переход к строке
adg.selectedIndex = i;
adg.scrollToIndex(i);
сейчас, когда я добавляю Группировку, dataProvider оказывается GroupingCollection2, и теперь индекс в источнике датапаравидера больше не соответствует индексу в adg (что понятно, потому что оно сгруппировано).
Как я могу эффективно выбирать и отображать строку в сгруппированных данных? В настоящее время я должен пройти adg и сравнить каждый найденный элемент с его атрибутами данных, чтобы найти правильный индекс строки в adg и перейти к нему, как указано выше. Этот процесс происходит очень медленно. Есть предположения?
отредактировал позже: Мы уже использовали объект кеширования, как предлагает Шон, но он по-прежнему не компенсировал время поиска. Чтобы полностью построить сортировку списка вещей (к которому эта проблема приравнивается, поскольку список полностью переупорядочивается группировкой), вы всегда должны знать весь набор. В итоге мы не решили эту проблему. Проект завершен. Я соглашусь ответить Шон, если никто не знает лучшего пути через три дня.
Это проблема для прокрутки ADG для выбора и отображения объекта пользователя. Подумайте буквально десятки тысяч строк, которые группируются в тысячи групп. Вы точно знаете идентификатор объекта, который вы ищете. Проблема заключается в том, что вы не знаете, в какой строке этот объект будет отображаться. Скажем, у нас есть два объекта: (38, Jane Doe) и (39, John Doe), и они сгруппированы в (0, The Does). Теперь у вас будут строки: [0] (0, The Does), [1] (38, Jane Doe), [2] (39, John Doe). Вам нужно будет перейти к строке 2 для отображения и выбрать Джона. Нет простого способа получить индекс Джона (39). –
Чтобы уточнить, для того, чтобы построить этот объект, который вы предлагаете, мне было бы нужно смотреть на каждый объект в сетке, чтобы его построить, что занимает столько времени, что я задал этот вопрос в первую очередь (мы были кэшируя результаты, достигнутые нами путем перемещения списка только в таком объекте, клиент хотел бы перейти к строке объекта 100, которая была 6485-м объектом, поэтому мы знали бы 6485 строк в нашем кеше), но этого было недостаточно. –