Согните, отфильтруйте дерево с помощью ITreeDataDescriptor без перезагрузки и закройте все узлы - PullRequest
1 голос
/ 18 января 2011

работа с flex 4 и реализация фильтрации с использованием ITreeDataDescriptor. Фильтрация работала, как и ожидалось, как в следующем фрагменте кода

однако я пытаюсь создать тип фильтра по требованию, в котором пользователь вводит условие поиска в TextInput, а по мере ввода пользователем узлы дерева будут фильтроваться на лету.

моя реализация теперь заключается в том, чтобы пользователь щелкнул по кнопке поиска, а затем повторно применил dataDescriptor, а затем перезагрузил данные. Большая проблема в том, что все дерево рушится после повторной установки dataProvider.

есть ли какие-либо предложения о том, как можно получить фильтр по требованию?

var dataFilter:ServicePricingFilter = new MyFilter();
dataFilter.searchString = this.txtSearchKeyword.text;
this.treeService.dataDescriptor = new MyDataDescriptor(dataFilter);
this.treeService.dataProvider = getTreeData();

Ответы [ 2 ]

0 голосов
/ 21 января 2011

посмотрел пост, упомянутый Флорианом.фильтрация по требованию выполняется с использованием ITreeDataDescriptor и функции filterFunction.при событии keyup поиска TextInput вызовите функцию invalidateList () в дереве.

см. исходный код, предоставленный для следующего сообщения http://www.davidarno.org/2009/04/01/how-to-filter-all-nodes-of-a-flex-tree-component/

0 голосов
/ 18 января 2011

Я думаю, вам не следует каждый раз устанавливать поставщик данных, а использовать свойство insted, доступное для классов ListCollectionView (ArrayCollection, XMLListCollection, ...)

...