Nick,
the same trouble for me, I've noticed strange behavior with Tree
manipulation.
I think it's maybe not your code.
Have a look at : http://www.adobe.com/devnet/flex/quickstart/
working_with_tree/
take the first example : Add Operation Employee
Add many employees to force scrollbars to appears, then remove
one ...., there's some troubles like yours
Stephane
Le 2 avr. 07 à 14:13, Nick Durnell a écrit :
Hi all,
I have a tree containing lots of branches. When a user opens a
branch I add a load of leaf nodes to it. I am running into problems
where the new nodes are not displayed correctly.
Here is a sample application which demonstrates the problem:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="200"
height="300" layout="absolute" creationComplete="createTopNodes();">
<mx:Script>
<![CDATA[
import mx.events.TreeEvent;
import mx.collections.ArrayCollection;
[Bindable] private var treeNodes:ArrayCollection = new
ArrayCollection();
private function createTopNodes():void
{
var newTestObj:TestObj;
for (var i:int=1; i<=20; i++)
{
newTestObj = new TestObj();
newTestObj.id = i.toString();
newTestObj.children = new Array();
treeNodes.addItem(newTestObj);
}
}
private function itemOpenHandler(e:TreeEvent):void
{
var selectedObj:TestObj = TestObj(e.item);
if (selectedObj.hasChildren)
{
return;
}
var newTestObj:TestObj;
for (var i:int=1; i<=20; i++)
{
newTestObj = new TestObj();
newTestObj.id = selectedObj.id + "_" + i.toString();
newTestObj.children = new Array();
selectedObj.children.push(newTestObj);
}
selectedObj.hasChildren = true;
}
]]>
</mx:Script>
<mx:Tree id="testTree" width="100%" height="100%"
dataProvider="{treeNodes}" labelField="id" itemOpen="itemOpenHandler
(event);"/>
</mx:Application>
This demo simply creates 20 top-level nodes and adds 20 child nodes
whenever you open an existing node.
If you run the application and expand a node, the new child nodes are
displayed down to the bottom of the visible tree area (all well and
good). However if you scroll down, the remaining sub-nodes are
nowhere to be seen! In fact, the visible sub-nodes have been drawn
on top of the nodes at the top of the tree. However if you close the
node again and open it a second time everything is displayed as it
should.
Is this a bug with the tree control or am I doing something
completely wrong? I need to create nodes like this on the fly as my
tree is very big and I need to fetch child nodes from a database
whenever the user opens a node in the tree. I've tried adding calls
to invalidateDisplayList and invalidateSize on the tree after
creating the child nodes but this doesn't seem to make any difference.
Thanks,
Nick.