Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.06.2011, 14:35
kro_kro вне форума Посмотреть профиль Отправить личное сообщение для kro_kro Найти все сообщения от kro_kro
  № 1  
Ответить с цитированием
kro_kro

Регистрация: Oct 2008
Сообщений: 16
По умолчанию Как обойти дерево, используя HierarchicalCollectionViewCursor?

Пытаюсь обойти все элементы дерева на всех уровнях иерархии. Вот код:
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
				width="500" height="500"
				creationComplete="onCreationComplete(event)">
	<mx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.collections.HierarchicalCollectionView;
			import mx.collections.HierarchicalCollectionViewCursor;
			import mx.collections.HierarchicalData;
			import mx.collections.IHierarchicalCollectionViewCursor;
			import mx.controls.List;
			import mx.events.FlexEvent;
			[Bindable]
			private var treeDP:HierarchicalCollectionView;
			private var treeData:Array=[{label:"leaf 1"}];
 
			protected function onCreationComplete(event:FlexEvent):void
			{
				var children:Array=[{label:"leaf 11"},{label:"leaf 12"}];
				treeData[0].children=children;
				treeDP=new HierarchicalCollectionView(new HierarchicalData(treeData));
			}
 
 
			protected function onClick(event:MouseEvent):void
			{
				var cursor:IHierarchicalCollectionViewCursor;
				cursor=IHierarchicalCollectionViewCursor(treeDP.createCursor());
				while(cursor.current)
				{
					trace(cursor.current.label);
					cursor.moveNext();
				}
			}
 
		]]>
	</mx:Script>
	<mx:VBox width="100%" height="100%">
		<mx:Tree id="tree" dataProvider="{treeDP}" width="100%" height="100%"/>
		<!--<mx:AdvancedDataGrid id="grid" dataProvider="{treeDP}" width="100%" height="100%"/>-->
		<mx:Button click="onClick(event)"/>
	</mx:VBox>
</mx:Application>
Увы, что при открытом, что при закрытом корневом узле, в консоль трейсится только "leaf 1", т.е. курсор не обходит данные в глубину. Для AdvancedDataGrid этот код работает. Подскажите, как сделать, чтоб он работал и для дерева?

Старый 28.06.2011, 18:04
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Tree не умеет нормально работать с HierarchicalCollectionView. Для "разворачивания" / "сворачивания" дерева он использует интерфейс ITreeDataDescriptor

Цитата:
Пытаюсь обойти все элементы дерева на всех уровнях иерархии
Я, в таком случае, использовал рекурсию.
__________________
משיח לא בא
משיח גם לא מטלפן


Последний раз редактировалось alatar; 28.06.2011 в 18:07.
Старый 28.06.2011, 18:12
kro_kro вне форума Посмотреть профиль Отправить личное сообщение для kro_kro Найти все сообщения от kro_kro
  № 3  
Ответить с цитированием
kro_kro

Регистрация: Oct 2008
Сообщений: 16
Спасибо. Похоже, рекурсия -- оптимальный вариант.

Старый 30.06.2011, 18:45
saprahan вне форума Посмотреть профиль Отправить личное сообщение для saprahan Найти все сообщения от saprahan
  № 4  
Ответить с цитированием
saprahan

Регистрация: Mar 2011
Сообщений: 48
Цитата:
Сообщение от kro_kro Посмотреть сообщение
Спасибо. Похоже, рекурсия -- оптимальный вариант.
Смотря какого размера дерево

Старый 30.06.2011, 19:05
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 5  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
saprahan, вы полагаете, что курсор это делает каким-то магическим способом и будет работать быстрее?
Цитата:
Смотря какого размера дерево
Большие объемы данных тянуть на клиент смысла нет.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 01.07.2011, 12:09
saprahan вне форума Посмотреть профиль Отправить личное сообщение для saprahan Найти все сообщения от saprahan
  № 6  
Ответить с цитированием
saprahan

Регистрация: Mar 2011
Сообщений: 48
Цитата:
Сообщение от alatar Посмотреть сообщение
saprahan, вы полагаете, что курсор это делает каким-то магическим способом и будет работать быстрее?

Большие объемы данных тянуть на клиент смысла нет.
Это так, но динамическая подгрузка стоит дорого. При коммерческой разработке ресурсы ограничены.

Добавлено через 10 минут
Есть дешевое промежуточное решение. Оно конечно не поможет автору темы, но очень здорово помогает справиться с большинством вопросов. Это две мапы uid->parent и uid->item, которые нужно создавать при смене сорса HCV. В самом HCV разумеется.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:03.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.