Flex Tree 数据过滤

来源:互联网 发布:淘宝达人发帖图片范本 编辑:程序博客网 时间:2024/05/21 10:06

根据用户输入的关键字,在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
(请您对文章做出评价)



原创粉丝点击