FLEX Tree 控件动态加载

首先给 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、付费专栏及课程。

余额充值