Просмотр полной версии : Как отфильтровать AdvancedDataGrid
Jitakuzu
15.08.2011, 16:06
Собственно сабж
Только нужно фильтровать не DataProvider, а саму таблицу. То есть, визуальное ее отображение. Чтоб на экран выводились только удовлетворяющие заданным параметрам ряды.
Сделать копию коллекции, установить ее в качестве dataProvider (это свойство, а не класс. Не стоит писать DataProvider) и отфильтровать. Ну, или сначала отфильтровать, а потом установить как dataProvider.
Jitakuzu
15.08.2011, 16:20
Понял, с большой буквы написал - не прав.
Дело в том, что тогда, отфильтровав таблицу, если внести в нее изменения, то они не отразятся на первоначальном источнике.
К примеру:
var newArr:Array = dataGrid.dataProvider.filter(filterFunc);
dataGrid.dataProvider = newArr;
Теперь все изменения будут вносится в newArr, а мне надо, чтоб не прошедшие фильтр поля тоже остались в памяти, просто не выводились на экран. То есть, я применю фильтр, внесу изменения, отключу фильтр и хочу увидеть полную таблицу, но с измененными полями. Надеюсь, понятно. Такое возможно?
Функция фильтрации ничего не удаляет, только возвращает true/false для каждого элемента, если вам не важен порядок элементов в исходной коллекции, то копию делать не нужно. Если убрать фильтр, все элементы станут опять видны.
В любом случае, вы всегда можете получить доступ к неотфильтрованным данным через ListCollectionView#list (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/mx/collections/ListCollectionView.html#list).
var newArr:Array = dataGrid.dataProvider.filter(filterFunc);
Откуда вы взяли функцию filter возвращающую массив?
Добавлено через 2 минуты
Для того что бы фильтровать данные вам нужен ArrayCollection или ListCollectionView и ListCollectionView#filterFunction (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/mx/collections/ListCollectionView.html#filterFunction).
Jitakuzu
15.08.2011, 16:46
ок, спасибо, буду разбираться.
Добавлено через 18 минут
Я в качестве dataProvider использовал Array. Поменял на ArrayCollection и все заработало. Спасибо.
Единственное, осталась одна проблема, может поможете? http://www.flasher.ru/forum/showthread.php?t=163971
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.