flex tree 树形控件 快速定位
需求:根据一个字符串查找树形控件对应的节点,并选中
实现思路:首先要知道tree中的数据肯定是XML或者XMLList,因此可以选择使用递归循环查找xml,并于需要匹配的字符进行比较,记录匹配到的节点.并选中.
具体代码:
?var list:XMLList=newXMLList();
?list[0] =budProTr.dataProvider[0];?//budProTr是tree的id,获取tree的dataProvider
?recursionFindTree(list,costDetailGuid);??//调用循环方法查找匹配的节点
?
?
??//递归定位树形节点,要查找的字符就是传入的find?和对应tree的@guid属性
????privatefunction recursionFindTree(xmlList:XMLList,find:String):void
????{
?????for(vari:int=0;i<xmlList.length();i++)
?????{
??????varchildXml:XML =xmlList[i];
??????varguid:String = childXml.@guid;
??????if(guid!= null && guid == find)
??????{
???????budProTr.selectedItem= childXml;???//将tree的选中像设定为当前项
???????saveCostCodeBtn.enabled= true;
???????return;
??????}elseif(budProTr.dataDescriptor.isBranch(childXml))//如果有子节点,则递归调用本方法
??????{
???????recursionFindTree(childXml.children(),find);
??????}
???????
?????}
????}