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>