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