2009-02-18 32 views
1

我有一种将XML节点结构添加到当前选定的树节点的方法。以编程方式在Flex树控件中引发更改事件

这附加xml,并打开父节点以显示新添加的节点。

然后,我通过设置树的selectedItem来选择节点。

我有一个编辑窗体,更新树更改事件的值。当我在这个方法中设置selectedItem时,节点被正确选择,但是改变事件永远不会触发(因此编辑器不会更新)。我试图在以后的通话中称它为无效。

有没有一种方法可以强制树在这一点上发送更改事件?

public function addSelected(node:XML):void{ 

      tree_expandItem(false);    

      var selectedItem:XML = tree.selectedItem as XML; 

      selectedItem.appendChild(node); 

      tree_expandItem(true); 

      callLater(function():void { tree.selectedItem = node; }); 

     } 

要的方式一般排序扩展这个问题 - 我本来以为改变树的selectedItem属性将导致更改事件呢?或者,如果用户做出改变,那么改变只会被视为改变?

回答

3

您可以移动当前在您的change事件处理到一个单独的功能逻辑,然后直接调用该函数:

private function changeHandler(event:ListEvent):void 
{ 
    doChangeLogic(); 
} 

private function doChangeLogic():void 
{ 
    //statements 
} 

public function addSelected(node:XML):void 
{ 
    tree_expandItem(false);       

    var selectedItem:XML = tree.selectedItem as XML; 

    selectedItem.appendChild(node); 

    tree_expandItem(true); 

    callLater(function():void { tree.selectedItem = node; }); 

    doChangeLogic(); 
} 
2

有没有一种方法可以强制树在此时发送更改事件?

使用dispatchEvent()方法。谢谢詹姆斯!

+0

它实际上是dispatchEvent()方法;) – 2009-02-18 09:09:25

+0

好,谢谢詹姆斯。 – dirkgently 2009-02-18 09:15:38

相关问题