PDA

Просмотр полной версии : Expand root в Tree


Bruiser
29.12.2007, 12:21
Подскажите, как открыть root-овый элемент дерева.
Пробую так - не получается

myTree.expandItem(myTree.root,true,true);

Bruiser
09.01.2008, 11:20
Взял из help-а пример дерева, добавил метод init(), где пытаюсь разворачивать дерево

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">

<mx:Script>
<![CDATA[
import mx.collections.XMLListCollection;
public function init():void{
var arr:XMLListCollection = myTree.dataProvider as XMLListCollection;
if (arr!=null){
var obj:Object = arr[0];
}
myTree.expandItem(obj,true,false);
}
]]>
</mx:Script>

<mx:XMLList id="treeData">
<node label="Mail Box">
<node label="Inbox">
<node label="Marketing"/>
<node label="Product Management"/>
<node label="Personal"/>
</node>
<node label="Outbox">
<node label="Professional"/>
<node label="Personal"/>
</node>
<node label="Spam"/>
<node label="Sent"/>
</node>
</mx:XMLList>

<mx:Tree id="myTree" width="100%" height="100%" labelField="@label" showRoot="true" dataProvider="{treeData}"/>
</mx:Application>

... дерево разворачивается.

Начинаю делать у себя

myXML = XML(myLoader.data);
var xml:XMLList = myXML.children();
myTree.dataProvider = xml;

if (xml!=null){
var obj:Object = xml[0];
myTree.expandItem(obj,true,false);
}... ничего не получается.

Объект obj во втором примере:

<root data="100" label="RQ=187/2007_12">
<node data="200" label="Исходные данные">
<node data="210" label="Транковые группы"/>
<node data="220" label="Главные номера"/>
<node data="230" label="ТОПС"/>
</node>
<node data="300" label="Отчет"/>
<node data="500" label="Детализация"/>
</root>

FlexOkeks
09.01.2008, 14:31
myTree.expandItem(myTree.dataProvider.getItemAt(0),true,false);

Bruiser
09.01.2008, 15:55
myTree.expandItem(myTree.dataProvider.getItemAt(0),true,false);

Это тоже самое, что и я написал, во всяком случае, объект тот же получаю (obj), а дерево не разворачивается.

etc
09.01.2008, 16:05
myTree.expandItem(myTree.dataProvider[0],true,false);

Bruiser
09.01.2008, 16:46
myTree.expandItem(myTree.dataProvider[0],true,false);
То, что предлагаете - это практически тоже самое, что и я написал.

var arr:XMLListCollection = myTree.dataProvider as XMLListCollection;
if (arr!=null){
var obj:Object = arr[0];
myTree.expandItem(obj,true,false);
}

Объект получается один и тот же, просто не тот объек нужно получать наверное, в другом формате.

etc
09.01.2008, 17:42
Цитата из хелпа по expandItem:

Opens or closes a branch item. When a branch item opens, it restores the open and closed states of its child branches if they were already opened. If you set dataProvider and then immediately call expandItem() you may not see the correct behavior. You should either wait for the component to validate or call validateNow().

Bruiser
10.01.2008, 10:17
Не знаю, не работает...

etc
10.01.2008, 10:33
Ну тогда callLater спасёт.

Bruiser
10.01.2008, 10:46
Во, вот так только и заработало, пасиб