FLEX Tree 控件动态加载

解决的问题:实现一个从数据库动态的读取数据,并且用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);

            }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值