flex blazeds 異步加載tree


<?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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章