EXTJS:treepanel以编程方式移动分支

EXTJS:treepanel以编程方式移动分支,extjs,Extjs,我有一个树,用户可以在其中拖放分支 现在这一切都很好,但我需要能够以编程方式移动分支 我需要模拟剪切粘贴(我将让用户使用按钮而不是Ctrl-X和V) 有人知道我应该从哪里开始吗?我从来没有使用过该方法,因此我无法真正为您提供完整的解决方案,但TreePanel类有一个具有以下参数的movenode方法。。。树,节点节点,节点oldParent,节点newParent,编号索引 还有与此方法相关的事件。希望这有帮助 编辑-我读API太快了,这些都是事件。我认为手动执行此操作的唯一方法是使用appe

我有一个树,用户可以在其中拖放分支

现在这一切都很好,但我需要能够以编程方式移动分支

我需要模拟剪切粘贴(我将让用户使用按钮而不是Ctrl-X和V)


有人知道我应该从哪里开始吗?

我从来没有使用过该方法,因此我无法真正为您提供完整的解决方案,但TreePanel类有一个具有以下参数的movenode方法。。。树,节点节点,节点oldParent,节点newParent,编号索引

还有与此方法相关的事件。希望这有帮助


编辑-我读API太快了,这些都是事件。我认为手动执行此操作的唯一方法是使用appendChild和removeChild方法。

好的,我找到了解决方案,结果非常非常简单:

var child = tree.getSelectionModel().getSelectedNodes();
var parent = tree.getNodeById('ABC123');
parent.appendChild(child);
它甚至会自动将节点从其原始位置移除,甚至会移动已移动节点的所有子节点


请注意,目前这只适用于一个节点(即使它使用的是selectedNodes),稍后我将发布一些更为实质性的内容。

这里是一个剪切粘贴,可以同时适用于多个节点。此版本还将隐藏任何已“剪切”的节点,并且在粘贴之前不会再次显示这些节点。在粘贴过程中,它将只使用选定的第一个节点,所有其他节点将被忽略

var Children = new Array();

function CutChildren(){
    Children = tree.getSelectionModel().getSelectedNodes();
    var limit = Children.length;
    for (count =0; count < limit; count++){
        Children[count].getUI().hide();
    }

}

function PasteChildren(){
    var selected = new Array();
    selected = tree.getSelectionModel().getSelectedNodes();
    var limit = Children.length;
    for (count =0; count < limit; count++){
        selected[0].appendChild(Children[count]);
        Children[count].getUI().show();
        if (count > 100){
        break;}
    }

}
var Children=newarray();
函数CutChildren(){
Children=tree.getSelectionModel().getSelectedNodes();
var limit=Children.length;
对于(计数=0;计数<限制;计数++){
子项[count].getUI().hide();
}
}
函数PasteChildren(){
所选变量=新数组();
selected=tree.getSelectionModel().getSelectedNodes();
var limit=Children.length;
对于(计数=0;计数<限制;计数++){
已选择[0]。追加子项(子项[count]);
子项[count].getUI().show();
如果(计数>100){
中断;}
}
}

我在API中查找,只能找到一个moveNode事件,没有找到方法。是的,你说得对,对不起。您需要使用appendChild和removeChild方法。