FLEX Tree 控件动态加载

本文介绍如何使用Flex结合HTTPService实现从数据库动态读取数据并构建Tree组件的方法。文章详细展示了通过设置数据源、定义HTTPService及相应事件处理函数来完成树形结构的动态加载过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决的问题:实现一个从数据库动态的读取数据,并且用Tree动态的进行加载

在这里,本人就简单说明一下FLEX 端的实现,服务器端可以用PHP ASP.NET 进行实现。

首先给Tree设置一个数据源:

[Bindable]
private var dataTree:XMLList;

在个当前选中的树节点设置一个变量
private var currentItem:XML;

接着设置与服务器进行连接的HTTPSERVICE 控件
<mx:HTTPService id="treeService" result="ResultHandler(event)" fault="FaultHandler(event)" resultFormat="e4x" url="你自己的服务器端地址">

</mx:HTTPService>
然后在页面上放置一个树控件:
<mx:Tree id="sdbTree" height="100%" width="25%" dataProvider="{dataTree}" showRoot="true" creationComplete="InitSdbTree()" labelField="@label" itemOpening="TreeItemOpening(event)" fontSize="12"></mx:Tree>

InitSdbTree():是对数进行初始化
TreeItemOpening 节点展开时进行触发

private function InitSdbTree():void
{
sdbTree.setStyle("disclosureClosedIcon",Lplus);
sdbTree.setStyle("disclosureOpenIcon",Lminus);
treeService.method="GET";
treeService.request = {"subject":"root"};
var call:AsyncToken = treeService.send();
call.request_params = treeService.request;
}

private function TreeItemOpening(evt:TreeEvent):void
{
if(evt.type == TreeEvent.ITEM_OPENING)
{
var e:TreeEvent = TreeEvent(evt);
currItem = XML(e.item);

if(e.item.@isLoad == "false")
{
e.item.node.@label = "Loading...";
var parameters:*={"subject":e.item.@subject}
if(e.item.@schema != null)
{
parameters['server'] = e.item.@server;
parameters['database'] = e.item.@database;
parameters['schema'] = e.item.@schema;
}
else if(e.item.@database != null)
{
parameters['server']=e.item.@server;
parameters['database'] = e.item.@database;
}
else if(e.item.@server != null)
{
parameters['server']=e.item.@server;
}
treeService.request = parameters;
var call:AsyncToken = treeService.send();
call.request_params = treeService.request;
CursorManager.setBusyCursor();
}
}
}

private function ResultHandler(result:ResultEvent):void
{
if (result.token.request_params['subject']=="root")
{

dataTree = treeService.lastResult.node;
}
else
{

CursorManager.removeBusyCursor();
delete currItem.node[0];
currItem.@isLoad = "true";

var node:XMLList = treeService.lastResult.node;
currItem.node += node;
//currItem.appendChild(node); //注意:如果用这个语句,也能成功,但是数据量大后,速度相当的慢
}
setTimeout(sdbTree.validateNow,100);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值