繁体   English   中英

以编程方式触发Flex树控件中的更改事件

[英]Triggering a change event in a Flex tree control programmatically

我有一种方法可以将XML节点结构添加到当前选择的树节点。

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

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

我有一个编辑表单,可以在树更改事件中更新其值。 当我在此方法中设置selectedItem时,将正确选择该节点,但不会触发change事件(因此编辑器不会更新)。 我试图在稍后的调用块中调用它无济于事。

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

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会导致更改事件? 还是仅当用户进行更改时才将其视为更改?

您可以将更改事件处理程序中当前存在的逻辑移至单独的函数,然后直接调用该函数:

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();
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM