Flex Tree 数据过滤


根据用户输入的关键字,在Tree控件中快速的把匹配的数据列出来是个比较好功能。现在发现有两种实现方法,一是如果Tree数据源是ArrayCollection 可以用它的filterFunction来指定一个过滤函数来实现,二是从Tree的初始数据中过滤出新的XML数据。下面的例子用的就是第二种方法,只列出关键语句  从webservice获取xml数据方面的操作都不列出了。

private var xmllist:XMLList;

private var keyword:String;

//过滤数据
    public function filterData(keywodr:String):void
    {
        if(StringUtil.trim(keywodr)!="")
        {
        this.keyword=keywodr;
        var myxml:XML=<node/>;
        for(var k:int=0;k<xmllist.length();k++)
        {
            var tempxml:XML=getXML(new XMLList(xmllist[k]));
            if(tempxml.children().length()>0)
            {
                myxml.appendChild(tempxml);
            }
        }

        this.tree.dataProvider=myxml.children();
        }
        else              //输入关键字为空时为原始数据
        {
            this.tree.dataProvider=xmllist;
        }
    }

 

    private function getXML(xmllist:XMLList):XML
    {
        var xmlChildren:XMLList=xmllist.children();        //子节点
        var xml:XML=<categories/>;                            //返回的xml
        if(xmllist.hasOwnProperty("@cd")) xml.@cd=xmllist.@cd;//xml属性
        if(xmllist.hasOwnProperty("@STNM")) xml.@STNM=xmllist.@STNM;
        for(var i:int=0;i<xmlChildren.length();i++)
        {
            if(xmlChildren[i].children().length()>0)                     //有子节点时
            {
                var xmlGet:XML=getXML(new XMLList(xmlChildren[i]));        //递归得到的xml
                if(xmlGet.children().length()>0)                        //有子节点就增加
                {
                    xml.appendChild(xmlGet);                       
                }
            }else                                                        //无子节点时
            {
                var temp:String=xmlChildren[i].@STNM;
                if(temp.indexOf(this.keyword)>=0)//关键字
                {
                    xml.appendChild(xmlChildren[i]);
                }
            }
        }
            return xml;
    }

0
0
0
(请您对文章做出评价)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值