1

現在選択されているツリー ノードに XML ノード構造を追加する方法があります。

これにより、xml が追加され、親ノードが開き、新しく追加されたノードが表示されます。

次に、ツリーの selectedItem を設定してノードを選択します。

ツリー変更イベントで値を更新する編集フォームがあります。このメソッドで selectedItem を設定すると、ノードは正しく選択されますが、変更イベントは発生しません (したがって、エディターは更新されません)。call laterブロックでそれを呼び出そうとしましたが、役に立ちませんでした。

この時点で、強制的にツリーに変更イベントをディスパッチさせる方法はありますか?

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 を変更するととにかく変更イベントが発生すると思いましたか? それとも、変更はユーザーが行った場合にのみ変更と見なされますか?

4

2 に答える 2

3

現在変更イベント ハンドラーにあるロジックを別の関数に移動し、その関数を直接呼び出すことができます。

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();
}
于 2009-02-18T14:24:56.233 に答える
2

この時点で、強制的にツリーに変更イベントをディスパッチさせる方法はありますか?

dispatchEvent() メソッドを使用します。ありがとうジェームズ!

于 2009-02-18T06:31:29.613 に答える