在使用Tree的时候,数据一旦很多,就很难定位自己要的数据,这里就需要查找和定位了。
默认Tree的Item都是close的,查找后,要判断isBranch?如果是,我们打开它的parent,然后定位此查找项就行了。
这里涉及到的查找和定位,代码比较简单,使用一个递归方法就行了。
myTree:要查找的树;treeData:tree的数据源;findStr:待查找的项。(这里没有模糊查找,需要完全匹配)
/**
* 定位查找内容并打开。
* 此方法最好作为自定义Tree控件的API
* */
private function recurpositionAndOpenItem(myTree:Tree,treeData:XMLList,findStr:String):void
{
for(var i:int=0; i<treeData.length(); i++)
{
var childXML:XML = treeData[i];
if(myTree.dataDescriptor.isBranch(childXML))
{
recurpositionAndOpenItem(myTree,childXML.children(),findStr);
continue;
}
if(findStr==childXML.@label)
{
myTree.expandChildrenOf(childXML.parent(),true);
myTree.selectedItem = childXML;
myTree.scrollToIndex(myTree.selectedIndex);
return;
}
}
}这里涉及到了查找,那么简单的TextInput是不是显得功能太单调,而且上面的方法没有模糊匹配,所以需要一个过滤查找输入框组件。
功能截图如下:
功能点:自动过滤内容,动态显示在下拉框内,配对的项使用下划线或者改变Color的方式显示。
这里我参考了老外资料,源码就不加了。

在处理大量数据的Flex3 Tree组件时,快速定位变得至关重要。通过递归方法,可以实现在查找匹配项后自动展开父节点并定位到目标项。查找功能要求完全匹配,不支持模糊查找,并且能动态显示匹配内容,突出显示匹配项。
&spm=1001.2101.3001.5002&articleId=42120043&d=1&t=3&u=36dd3dccab5849f28f4a030a0b3e13d5)
988

被折叠的 条评论
为什么被折叠?



