加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex从数据库取数据动态生成tree

发布时间:2020-12-15 04:44:14 所属栏目:百科 来源:网络整理
导读:1.新建一个Node类: package{import mx.collections.ArrayCollection;public class Node{//节点类型public var type:String; public var id:Stringpublic var name:String;public var children:ArrayCollection;public var parentId:String;public function

1.新建一个Node类:

package
{
	import mx.collections.ArrayCollection;
	
	public class Node
	{
		//节点类型
		public var type:String; 
		public var id:String
		public var name:String;
		public var children:ArrayCollection;
		public var parentId:String;
		public function Node()
		{
		}
	}
}

2.创建Tree:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="init()"
			   >
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
		<s:RemoteObject id="entitiesManager" destination="entitiesManager" endpoint="http://localhost:8080/csMap/messagebroker/amf">
		</s:RemoteObject>
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.rpc.events.ResultEvent;
			
			//定义不同节点的对象Node集合
			private var csNodes:ArrayCollection = new ArrayCollection();
			private var cpNodes:ArrayCollection = new ArrayCollection();
			private var apNodes:ArrayCollection = new ArrayCollection();
			private var edNodes:ArrayCollection = new ArrayCollection();
			
			//定义不同节点的数据集集合
			[Bindable]
			private var dp_cs:ArrayCollection = new ArrayCollection();
			
			[Bindable]
			private var dp_cp:ArrayCollection = new ArrayCollection();
			
			[Bindable]
			private var dp_ap:ArrayCollection = new ArrayCollection();
			
			[Bindable]
			private var dp_ed:ArrayCollection = new ArrayCollection();
			
			//初始化地图
			private function init():void {
				init_cs();
			}
			
			//创建Tree
			private function createTreeNode():void {
				for(var ied:int=0;ied<dp_ed.length;ied++) {
					var ednode:Node = new Node();
					ednode.id = dp_ed.getItemAt(ied).id;
					ednode.name= dp_ed.getItemAt(ied).name;
					ednode.parentId = dp_ed.getItemAt(ied).apid;
					ednode.children = null;
					edNodes.addItem(ednode);
				}
				
				for(var iap:int=0;iap<dp_ap.length;iap++) {
					var apnode:Node = new Node();
					apnode.id = dp_ap.getItemAt(iap).id;
					apnode.name= dp_ap.getItemAt(iap).name;
					apnode.parentId = dp_ap.getItemAt(iap).cpid;
					apnode.children = new ArrayCollection();
					for(var ied1:int=0;ied1<edNodes.length;ied1++) {
						var ednode1:Node =Node(edNodes.getItemAt(ied1));
						if(ednode1.parentId==apnode.id) {
							apnode.children.addItem(ednode1);
						}
					}
					apNodes.addItem(apnode);
				}
				
				
				for(var icp:int=0;icp<dp_cp.length;icp++) {
					var cpnode:Node = new Node();
					cpnode.id = dp_cp.getItemAt(icp).id;
					cpnode.name= dp_cp.getItemAt(icp).name;
					cpnode.parentId = dp_cp.getItemAt(icp).csid;
					cpnode.children = new ArrayCollection();
					for(var iap1:int=0;iap1<apNodes.length;iap1++) {
						var apnode1:Node =Node(apNodes.getItemAt(iap1));
						if(apnode1.parentId==cpnode.id) {
							cpnode.children.addItem(apnode1);
						}
					}
					cpNodes.addItem(cpnode);
				}
				
				for(var i:int=0;i<dp_cs.length;i++) {
					var csnode:Node = new Node();
					csnode.id = dp_cs.getItemAt(i).id;
					csnode.name= dp_cs.getItemAt(i).name;
					csnode.children = new ArrayCollection();
					for(var icp1:int=0;icp1<cpNodes.length;icp1++) {
						var cpnode1:Node =Node(cpNodes.getItemAt(icp1));
						if(cpnode1.parentId==csnode.id) {
							csnode.children.addItem(cpnode1);
						}
					}
					csNodes.addItem(csnode);
				}
				csTree.dataProvider = csNodes;
				csTree.labelField = "name";
				
			}
			
			//初始化cs
			private function init_cs():void {
				this.entitiesManager.addEventListener(ResultEvent.RESULT,init_cs_s);
				this.entitiesManager.getCsList();
			}
			
			private function init_cs_s(event:ResultEvent):void {
				this.entitiesManager.removeEventListener(ResultEvent.RESULT,init_cs_s);
				this.dp_cs = ArrayCollection(event.result);
				init_cp();
			}
			
			//初始化cp
			private function init_cp():void {
				this.entitiesManager.addEventListener(ResultEvent.RESULT,init_cp_s);
				this.entitiesManager.getCpList();
			}
			
			private function init_cp_s(event:ResultEvent):void {
				this.entitiesManager.removeEventListener(ResultEvent.RESULT,init_cp_s);
				this.dp_cp = ArrayCollection(event.result);
				init_ap();
			}
			
			//初始化ap
			private function init_ap():void {
				this.entitiesManager.addEventListener(ResultEvent.RESULT,init_ap_s);
				this.entitiesManager.getApList();
			}
			
			private function init_ap_s(event:ResultEvent):void {
				this.entitiesManager.removeEventListener(ResultEvent.RESULT,init_ap_s);
				this.dp_ap = ArrayCollection(event.result);
				init_ed();
			}
			
			//初始化ed
			private function init_ed():void {
				this.entitiesManager.addEventListener(ResultEvent.RESULT,init_ed_s);
				this.entitiesManager.getEdList();
			}
			
			private function init_ed_s(event:ResultEvent):void {
				this.entitiesManager.removeEventListener(ResultEvent.RESULT,init_ed_s);
				this.dp_ed = ArrayCollection(event.result);
				createTreeNode();
			}
			
			
		]]>
	</fx:Script>
	
	<s:ComboBox x="39" y="41" id="cs" dataProvider="{dp_cs}" labelField="name"/>
	<s:ComboBox x="214" y="43" id="cp" dataProvider="{dp_cp}" labelField="name"/>
	<s:ComboBox x="405" y="43" id="ap" dataProvider="{dp_ap}" labelField="name"/>
	<s:ComboBox x="590" y="43" id="ed" dataProvider="{dp_ed}" labelField="name"/>
	
	<mx:Tree id="csTree" x="33" y="201" width="415" height="293">
		
	</mx:Tree>
</s:Application>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读