Выберите элемент дерева - PullRequest
       33

Выберите элемент дерева

0 голосов
/ 22 сентября 2010

Я работаю над компонентом дерева, использующим 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 голосов
/ 08 октября 2010

Попробуйте что-то вроде этого: отфильтруйте провайдера данных дерева, чтобы найти нужный объект, а затем получите индекс объекта в провайдере данных и попросите дерево выбрать этот элемент. Похоже на окольный способ сделать это, но я думаю, что это лучшее, что я могу придумать прямо сейчас.

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"
}
0 голосов
/ 22 сентября 2010

Использование 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);
...