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

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

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

Регистрация: Oct 2006
Сообщений: 7
По умолчанию Блин, с деревом в Flexe явно не все впорядке, или я чего-то не понимаю....

Всем привет, суть проблемы такова, у меня есть дерево, заполняеться оно при помощи XML, т.е. я загружаю вначале из базы ветки первого уровня, по мере открытия веток, данные подгружаются их базы динамически, т.е. я к существующему XML добавляю новые nodes, но! Потом у меня трабл, когда происходит Open какой нить ветки дерева, все нормально, подгружаются вложенные в эту ветку childs, а когда происходит скролл, они либо исчезают, либо перепрыгивают к другой node, вообщем полный бред.
Вопрос как с этим бороться??? Скажу сразу dataProvider у меня приводится к XMLListCollection как и сказано в helpe, пробовал даже делать дереву принудительный invalidateList() И invalidateNow().

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

Регистрация: Oct 2006
Сообщений: 7
По умолчанию Код

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initCatalog()">
<mx:Metadata>
	[Event(name="categorySelect", type="com.oms.events.CatalogEvent")]
</mx:Metadata>
	<mx:Script>
    <![CDATA[
    	import com.oms.events.CatalogEvent;
    	import mx.events.*;
    	import flash.events.*;
	    import com.oms.services.*;
		import mx.rpc.events.ResultEvent;
		import mx.managers.CursorManager;
		import mx.controls.Alert;
	    
		[Bindable]
		[Embed(source="Assets.swf", symbol="TreeNodeIcon")]
		public var fileIcon:Class;
		 
		[Bindable]
		[Embed(source="Assets.swf", symbol="TreeFolderOpen")]
		public var folderIcon:Class;
		
		[Bindable]
		[@Embed('/assets/indicator.gif')]
		public var waitIcon:Class;

		private function selectIcon(item:Object):Class {
			if(item.@directory == 0) 
				return fileIcon;
			else if(item.@directory == 1) 
				return folderIcon;
			else if(item.@directory == 2) 
				return waitIcon;
			else return fileIcon;
		}

	    [Bindable]
		public var Catalogs:XML;
			    
	    [Bindable]
		private var ProductsByCategory:XML;
		
		private var CategoryId:int;
		
		private function initCatalog():void {
			new Catalog().getCatalog(onResult,0);
		}
		
		private function onResult(event:ResultEvent):void {
			Catalogs = XML(ResultEvent(event).result);
		    CursorManager.removeBusyCursor();
		}

		private function changeEvt(event:Event):void {
			if(event.currentTarget.selectedItem != null) {
			    dispatchEvent(new CatalogEvent(event.currentTarget.selectedItem.@id));
			}
		}

		private function itemOpenEvt(event:TreeEvent):void {
			CategoryId = event.item.@id;
			new Catalog().getCatalog(onResult2,CategoryId);
		}

		private function onResult2(event:ResultEvent):void {
			//Alert.show(Catalogs.category.(@id==CategoryId).@label);
			Catalogs.descendants("category").(@id==CategoryId).replace("*",
												<category id="-1" directory="2"/>);
			var new_nodes:XML = XML(ResultEvent(event).result);
			//var len:int = new_nodes.category.length();
			var i:int = 1;
			for each (var new_node:XML in new_nodes.category) {
				if(i==1) {
					Catalogs.descendants("category").(@id==CategoryId).replace("*",new_node);
					i++;		
					continue;										
				}
				Catalogs.descendants("category").(@id==CategoryId).appendChild(new_node);
			}
		    CursorManager.removeBusyCursor();
		    catTree.invalidateList();
		}
    ]]>
	</mx:Script>

	<mx:Tree id="catTree" 
		labelField="@label" 
		showRoot="false" 
		dataProvider="{Catalogs}" 
		iconFunction="selectIcon" 
		doubleClickEnabled="true" 
		width="100%" 
		height="100%" 
		dragEnabled="true"
		dragMoveEnabled="true"
		dropEnabled="true"
		itemOpen="itemOpenEvt(event);" 
		change="changeEvt(event);"
		doubleClick="catTree.expandItem(catTree.selectedItem, !catTree.isItemOpen(catTree.selectedItem), true)" 
		initialize="initCatalog()"/>
</mx:VBox>

Старый 15.11.2006, 16:04
Builder вне форума Посмотреть профиль Отправить личное сообщение для Builder Найти все сообщения от Builder
  № 3  
Ответить с цитированием
Builder

Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 4
Отправить сообщение для Builder с помощью ICQ
Цитата:
Сообщение от Alexcid
Потом у меня трабл, когда происходит Open какой нить ветки дерева, все нормально, подгружаются вложенные в эту ветку childs, а когда происходит скролл, они либо исчезают, либо перепрыгивают к другой node, вообщем полный бред.
Вопрос как с этим бороться??? Скажу сразу dataProvider у меня приводится к XMLListCollection как и сказано в helpe, пробовал даже делать дереву принудительный invalidateList() И invalidateNow().
где исчезают ? в дереве или в самом XML ? И зачем каждый раз при открытии ветки запрашивать XML ? Можно же кешировать.

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

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
Да, замечен накой глючок за деревом, но пока его не искал и не лечил, за не надобностью. Ждем пока припечет %)
__________________
33 коровы

Старый 30.11.2006, 01:56
ex.image вне форума Посмотреть профиль Отправить личное сообщение для ex.image Найти все сообщения от ex.image
  № 5  
Ответить с цитированием
ex.image

Регистрация: Jan 2006
Адрес: Москва
Сообщений: 65
Отправить сообщение для ex.image с помощью ICQ
2 Alexcid
А можешь выложить код который бы работал локально без сервисов... а то пакейджов нехватает

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

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

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


 


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


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