用FLEX3从数据库接受数据形成树形图步骤:
1.封装一个名为Node的as类,包括编号,名称,子节点和一个构造方法。
package common{
import mx.collections.ArrayCollection;
public class Node{
public var id:int;
public var name:String;
public var children:ArrayCollection;
public function Node(){
}
}
}
2.运用Node.as完成树形图(假设两层数)。
private var trees:ArrayCollection; //第一层树结点数据
private var nodesChildren:ArrayCollection; //孩子结点集合
private var node:Node = new Node(); //树结点
private function getTree():void{
trees = new ArrayCollection();
var i:int = 0;
var j:int = 0;
var channel:Object ;//所有栏目
var firstChannel:Object ;//一级栏目
var secondChannel:Object ;//二级栏目
for(i;i<_channelList.length;i++){
channel = _channelList.getItemAt(i);
if(channel.PARENT_ID==0){
firstChannel = channel;
nodesChildren = new ArrayCollection();
for(j=0;j<_channelList.length;j++){
channel = _channelList.getItemAt(j);
if(channel.PARENT_ID==firstChannel.ID){
secondChannel = channel;
node = new Node();
node.id=secondChannel.ID;
node.name=secondChannel.CHANNEL_NAME;
node.children=null;
nodesChildren.addItem(node);
}
}
node = new Node();
node.id=firstChannel.ID;
node.name=firstChannel.CHANNEL_NAME;
node.children=nodesChildren;
trees.addItem(node);
}
}
tree.dataProvider=trees;
tree.labelField="name"; //指定显示字段
}
/**********获得栏目-回调方法**********/
private function getChannelListHttp_Handler(evt:JsonResponseEvent):void{
_channelList = new ArrayCollection(evt.JsonObj.data as Array);
getTree();
}
/**********点击树形栏目方法 *******/
private function tree_itemClick(evt:ListEvent):void {
var item:Object = evt.currentTarget.selectedItem;
var searchKeys:Array = new Array();
var searchValues:Array = new Array();
searchKeys.push("CHANNEL_ID");
searchValues.push(item.id);
paginator.param.isSearch=true;
paginator.param.searchKeys=searchKeys;
paginator.param.searchValues=searchValues;
paginator.commHttp.send(paginator.param);
channelId=item.id;
}
<mx:HBox width="150" height="100%">
<mx:Tree id="tree" width="100%" height="100%" itemClick="tree_itemClick(event)" ></mx:Tree>
</mx:HBox>