`

flex 异步加载tree

    博客分类:
  • flex
阅读更多
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
				layout="absolute"
				creationComplete="initTreeData()"
				xmlns:lns="com.render.*">
	<!--异步加载节点的树-->
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.TreeEvent;
			import mx.collections.ArrayCollection;
			import com.sevice.funService.FunService;
			import mx.events.ListEvent;

			[Embed("com/assets/loading.swf")]
			private var loadingIcon:Class;
			[Embed("com/assets/foldericon.png")]
			public var foldericon:Class;
			[Embed("com/assets/openfoldericon.png")]
			public var openfoldericon:Class;

			[Bindable]
			public var loadingxml:XMLList;





			private function initTreeData():void
			{
				var cm:FunService=new FunService();
				cm.getNodebyfunid(this);

			}

			private function tree_itemClick(evt:ListEvent):void
			{
				var cm:FunService=new FunService();
				var selectedNode:XML=treeSiteList.selectedItem as XML;
				var item:Object=AsyncTree(evt.currentTarget).selectedItem;

				if (treeSiteList.dataDescriptor.isBranch(item))
				{
					if (selectedNode.@isclicked == "false")
					{
						treeSiteList.setItemIcon(selectedNode, foldericon, loadingIcon);

						cm.getNodebyfunid2(this, selectedNode.@id, selectedNode);
						treeSiteList.expandItem(item, true, true);
					}else
					treeSiteList.expandItem(item, !treeSiteList.isItemOpen(item), true);

				}
			}

			private function tree_itemOpening(evt:TreeEvent):void
			{
				treeSiteList.selectedItem=evt.item;
				var cm:FunService=new FunService();
				var selectedNode:XML=treeSiteList.selectedItem as XML;
				var item:Object=AsyncTree(evt.currentTarget).selectedItem;

				if (treeSiteList.dataDescriptor.isBranch(item))
				{
					if (selectedNode.@isclicked == "false")
					{
						treeSiteList.setItemIcon(selectedNode, foldericon, loadingIcon);

						cm.getNodebyfunid2(this, selectedNode.@id, selectedNode);

					}
				//treeSiteList.expandItem(item, !treeSiteList.isItemOpen(item), true);

				}
			}

//			private function setView(ev:TreeEvent):void
//
//			{
//				//	Alert.show("123");
//				//	var item:XML=AsyncTree(event.currentTarget).selectedItem as XML;
//
//				treeSiteList.selectedItem=ev.item;
//				var cm:FunService=new FunService();
//				var selectedNode:XML=treeSiteList.selectedItem as XML;
//				var item:Object=AsyncTree(ev.currentTarget).selectedItem;
//
//				if (treeSiteList.dataDescriptor.isBranch(item))
//				{
//					if (selectedNode.@isclicked == "false")
//					{
//
//						treeSiteList.setItemIcon(selectedNode, foldericon, loadingIcon);
//
//						cm.getNodebyfunid2(this, selectedNode.@id, selectedNode);
//
//					}
//						//treeSiteList.expandItem(item, !treeSiteList.isItemOpen(item), true);
//				}
//
//			}
		]]>
	</mx:Script>
	<mx:Canvas width="100%"
			   height="450">

		<mx:VBox x="20"
				 y="20">
			<lns:AsyncTree id="treeSiteList"
						   x="20"
						   dataProvider="{loadingxml}"
						   y="10"
						   height="400"
						   width="394"
						   labelField="@label" 
						   itemClick="tree_itemClick(event);"
						   itemOpening="tree_itemOpening(event);"
						  >
			</lns:AsyncTree>
		</mx:VBox>

	</mx:Canvas>
</mx:Application>


AsyncTree文件的内容
package com.render
{
	import mx.controls.Tree;
	import mx.events.TreeEvent;
	import flash.events.Event;
	

	public class AsyncTree extends Tree
	{
		public function AsyncTree()
		{
			super();
		}

		
	}
}

FunService.cs部分代码
public function getNodebyfunid(tree:delayLoadingTree2):void
		{
			loadingtree=tree;
			var getCataLogRemoteObject:RemoteObject=new RemoteObject("FunService");
			getCataLogRemoteObject.addEventListener(FaultEvent.FAULT, getNodebyfunidFault);
			getCataLogRemoteObject.addEventListener(ResultEvent.RESULT, getNodebyfunidResult);
			getCataLogRemoteObject.getNodebyfunid("ITS");

		}

		public function getNodebyfunidFault(event:FaultEvent):void
		{
			Alert.show(event.fault.message);
		}

		public function getNodebyfunidResult(event:ResultEvent):void
		{
			//curTree
			var treexml:XMLList=new XMLList(String(event.result));

			loadingtree.loadingxml=treexml;
			//	showList(treexml);
		/* loadingtree.labelField="@label"; */

		}

		public function getNodebyfunid2(tree:delayLoadingTree2, id:String, repxml:XML):void
		{
			loadingtree=tree;
			xml=repxml;
		//	this.item=item;
			var getCataLogRemoteObject:RemoteObject=new RemoteObject("FunService");
			getCataLogRemoteObject.addEventListener(FaultEvent.FAULT, getNodebyfunidFault2);
			getCataLogRemoteObject.addEventListener(ResultEvent.RESULT, getNodebyfunidResult2);
			getCataLogRemoteObject.getNodebyfunid(id);

		}

		public function getNodebyfunidFault2(event:FaultEvent):void
		{
			Alert.show(event.fault.message);
		}

		public function getNodebyfunidResult2(event:ResultEvent):void
		{
			//curTree
			//var treexml:XMLList=new XMLList(String(event.result));

			//	Alert.show(new XMLList(event.result));
			//showList(new XMLList(String(event.result)));
			xml.@isclicked="true";
			var newxml:XML=xml.appendChild(new XMLList(event.result));
			//还原图标
			loadingtree.treeSiteList.setItemIcon(xml, loadingtree.foldericon, loadingtree.openfoldericon);
			//
			loadingtree.treeSiteList.expandItem(xml, false, true);
			loadingtree.treeSiteList.expandItem(xml, true, true);
//	Alert.show(newxml);

			//	var treexml:XMLList=new XMLList(xmlString);
			//	loadingtree.labelField="@label";

		}

FunServiceImpl.java部分代码,目的是获得下一级节点
public String getNodebyfunid(String funid) {
		String FlexTreeNodeString = "";
		String isBranch = "false";
		allFuns = this.findFunsByUser("32672");
		FunctionDTO[] fs = this.findFunByParentID(funid);
		if (fs != null) {
			for (int j = 0; j < fs.length; j++) {

				if (ishasChild(fs[j].getFuncid()) == true) {
					isBranch = "true";
				}
				FlexTreeNodeString = FlexTreeNodeString + "<Node id='"
						+ fs[j].getFuncid() + "'" + "isBranch ='" + isBranch
						+ "'" + " label=" + "'" + fs[j].getFuncname()
						+ "' isclicked='false'>";
				FlexTreeNodeString = FlexTreeNodeString + "</Node>\n";
			}

		}
		return FlexTreeNodeString;
	}

2
0
分享到:
评论
1 楼 01jiangwei01 2010-08-05  
你把源码打包传上来多好,部署方便。

相关推荐

    Flex Tree 异步加载数据及分屏小工具

    综上所述,"Flex Tree 异步加载数据及分屏小工具"涉及的技术点主要包括Flex组件的使用、异步加载机制、数据提供者管理、事件驱动编程、分页策略以及源码分析和优化。这些知识对于构建高效、响应式的Flex应用程序至关...

    flex tree 教程二

    8. **异步加载**:如果数据量非常大,可以使用异步加载机制,只在需要时加载节点的子节点,以减少初始化时的资源消耗。 在"New Folder.txt"文件中,可能包含了有关如何创建和配置Flex Tree组件的详细步骤、示例代码...

    flex tree控件

    此外,通过缓存节点状态和异步加载子节点,也可以提高Tree控件的性能。 7. 样式和主题: Flex允许开发者通过CSS样式表自定义Tree控件的外观,包括字体、颜色、背景等。此外,可以使用预定义的主题或创建自定义主题...

    FLEX ——完美的 TREE

    4. **异步加载**:如果数据量很大,为了提高用户体验,你可能需要实现异步加载,即只在需要时加载节点的子节点,而不是一次性加载所有数据。 5. **皮肤和外观**:为了达到“完美”的效果,你可能需要定制TREE组件的...

    flex4Tree组件分层显示数据示例

    在Flex4中,Tree组件还支持异步数据加载,这对于处理大量数据非常有用。通过实现`IHierarchicalData`接口和` IHierarchicaldataProvider`接口,可以在需要时动态加载子节点,提高应用性能。 在提供的源码中,你可能...

    flex 动态树,异步树

    - 事件监听:监听Tree的事件,如itemClick、itemOpen等,以便进行异步加载或其他操作。 5. 示例代码: ```actionscript // 创建Tree对象 var tree:Tree = new Tree(); tree.dataProvider = new ...

    flex Tree 相册 json格式数据

    8. **异步加载**:如果相册数据量庞大,可以采用异步加载策略,只在需要时加载对应部分的JSON数据,提高应用性能。 9. **工具支持**:标签提到的“工具”可能是指用来生成、编辑或测试JSON数据的工具,如Postman、...

    flex tree的简单使用

    在实际应用中,我们可能会遇到更复杂的需求,比如异步加载数据、自定义节点图标、拖放功能等。对于这些高级特性,我们需要深入理解Flex的事件模型和数据绑定机制。 在MXML中创建Tree的基本语法如下: ```xml &lt;Tree...

    动态绑定XML,实现flex树控件的绑定

    在Flex开发中,动态绑定XML是一种常见的数据驱动技术,它允许开发者通过XML文件来存储和管理数据,并将这些数据实时地...不过,实际应用中还需要考虑错误处理、数据刷新、异步加载优化等问题,以提供更优质的用户体验。

    flex的组织结构图组件

    4. 动态加载:如果层次结构非常大,可以考虑使用异步加载策略,只在需要时加载节点,以提高性能。 5. 节点状态管理:树节点可以有不同的状态,如展开、折叠、选中等,开发者需要管理这些状态以提供正确的用户反馈。...

    从头开发Flex树遇到的问题

    3. 展开/折叠逻辑:处理节点的展开和折叠状态,包括异步加载数据和优化性能。 4. 事件处理:监听用户的交互,如点击、拖放等,可能需要自定义事件处理器。 5. 性能优化:大量数据可能导致性能下降,需要合理管理内存...

    flex demos

    通过这些示例,开发者可以学习如何发送异步请求、处理响应数据、显示加载进度等,这对于构建实时更新的网管监控系统至关重要。 3. **Tree Demos**: Tree组件在Flex中用于展示层次结构数据,常见于文件系统、组织...

    Flex,IBM组织结构图例子

    在这种情况下,Flex会通过HTTPService或WebService组件与服务器进行数据交换,实现异步加载和更新。数据格式可能为XML、JSON或AMF,它们都是Flex支持的常见数据格式。 在开发过程中,开发者可能使用了Flex Builder...

    Flex从入门到精通

    1. **HTTP服务**:使用Flex的HTTPService类可以轻松实现与服务器的异步数据交换。 2. **Web服务**:Flex也支持与SOAP Web服务进行交互。 3. **RESTful API**:随着RESTful API的流行,Flex同样提供了相应的支持,...

    flex相册,图片展示

    例如,使用Tree或List控件展示相册分类,使用TextInput和Button实现搜索功能,而评论系统可能涉及Ajax异步通信,将用户的反馈发送到服务器。 最后,SWF相册指的是项目最终以Flash动画的形式呈现。SWF是一种用于网络...

    FLEX和Actionscript开发FLASH游戏.rar

    3. 异步通信:对于需要与服务器交互的在线游戏,AS3.0提供了XMLSocket和URLLoader等类进行异步数据传输。 四、FLEX组件应用 1. 用户界面:FLEX提供了丰富的UI组件,如Button、Sprite、Canvas等,可快速搭建游戏界面...

    Flex Gis 开发

    4. **Flex与Ajax交互**:结合Ajax技术实现异步加载数据,提高用户体验。 通过以上介绍,我们可以了解到Flex GIS开发涉及的技术点非常广泛,不仅包含了基本的Flex开发技能,还涵盖了GIS领域的专业知识。对于初学者来...

Global site tag (gtag.js) - Google Analytics