选择树项目

时间:2010-09-22 14:33:57

标签: xml flex flex4 e4x

我正在使用XMLLIST作为数据提供程序处理树组件。

<list>
    <menuItem label="Home" menuItemId="1" >
         <menuItem label="Info 1" menuItemId ="4"></menuItem>
     </menuItem>
     <menuItem label="Services" menuItemId="2" >
     </menuItem>
     <menuItem label="About" menuItemId="3" >
     </menuItem>
</list>

我需要通过属性'menuItemId'选择一个嵌套节点,而不需要知道索引。例如,选择带有menuItemId 4的项目。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用E4X。例如,

var myList:XMLList = <list>
    <menuItem label="Home" menuItemId="1" >
         <menuItem label="Info 1" menuItemId ="4"></menuItem>
     </menuItem>
     <menuItem label="Services" menuItemId="2" >
     </menuItem>
     <menuItem label="About" menuItemId="3" >
     </menuItem>
</list>;

var menuItemId4:XMLList = myList.menuItem.(@menuItemId==4);

答案 1 :(得分:0)

尝试这样的事情,过滤树的数据提供者以找到正确的对象,然后在数据提供者中获取对象的索引并告诉树选择该项。这似乎是一种迂回的方式,但我认为这是我现在能想到的最好的方法。

var filter:Array = tree.dataProvider.toArray().filter(filterFunc)
if (filter.length > 0)
    tree.selectedIndex = tree.dataProvider.getItemIndex(filter[0]);

protected function filterFunc(item:*, index:int, array:Array):Boolean{
    return (item as MenuItem).menuItemId == "2"
}