`

Flex实现树形列表的过滤

 
阅读更多
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;
			}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics