Flex实现树形列表的过滤

本文详细介绍了如何在Flex中实现树形列表的自定义过滤功能,包括关键字过滤逻辑和XML数据操作。

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

Flex实现树形列表的过滤

项目中用flex实现了一个设备列表,这个设备列表时树形结构的,当用户在输入关键字后,需要按照关键字过滤出符合条件的内容,用flex内部的过滤机制已经不能满足条件,需要自己重新写过滤方法,以下就是我写的过滤方法:

//keywodr 用户输入的关键字
public function filterData(keywodr:String):void
{
//templist是一个XMLList类型的全局变量,用于保存最原始的过滤内容
//unitGroupTree是从后台传入的信息,和树形控件绑定
templist = unitGroupTree.copy();
var xmllist:XMLList = templist;
if(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);
}
}
if(myxml.children().length() > 0){
myxml.node.node.@checked = "1";
unitGroupTreeTwo =XMLList(myxml);
unitGrouplist.dataProvider = unitGroupTreeTwo.children();
unitGrouplist.openItems = unitGroupTreeTwo..node;
}
else{
unitGrouplist.dataProvider = null;
}
}
else
{
unitGroupTree = templist.copy();
unitGrouplist.dataProvider = unitGroupTree;
unitGrouplist.openItems = unitGroupTree..node;
}
}

public function getXML(xmllist:XMLList):XML
{
var xmlChildren:XMLList=xmllist.children();
var xml:XML=<node/>;
if(xmllist.hasOwnProperty("@checked")) xml.@checked=xmllist.@checked;
if(xmllist.hasOwnProperty("@name")) xml.@name=xmllist.@name;
if(xmllist.hasOwnProperty("@oid")) xml.@oid=xmllist.@oid;
for(var i:int=0;i<xmlChildren.length();i++)
{
if(xmlChildren[i].children().length()>0)
{
var xmlGet:XML=getXML(new XMLList(xmlChildren[i]));
var tempStr:String=xmlGet.@name;
if((tempStr.toUpperCase().indexOf(this.keyword.toUpperCase())>=0)||xmlGet.children().length() > 0)
{
xml.appendChild(xmlGet);
}
}else
{
var temp:String=xmlChildren[i].@name;
if(temp.toUpperCase().indexOf(this.keyword.toUpperCase())>=0)
{
xml.appendChild(xmlChildren[i]);
}
}
}
return xml;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值