2010-07-20 58 views
0

我有一棵树,用户可以在其中拖放分支。现在,这一切都很好,但我需要能够以编程方式移动分支。我需要模拟剪切和粘贴(我将让用户使用按钮代替Ctrl - XV)有没有人有我应该从哪里开始的想法?EXTSJS:treepanel以编程方式移动分支

回答

0

我从来没有玩过这种方法,所以我不能真正给你一个完整的解决方案,但TreePanel类有一个movenode方法,具有以下参数...树树,节点节点,节点oldParent,节点newParent,号码索引

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

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

+0

我正在寻找API,我只能找到一个moveNode事件,我没有看到一个方法。 – Limey 2010-07-23 18:55:55

+0

是的,你是对的,我很抱歉。你需要使用appendChild和removeChild方法。 – SBUJOLD 2010-07-26 12:48:45

1

好吧,我找到了解决方案,它结束了是真的,真的很简单:

var child = tree.getSelectionModel().getSelectedNodes(); 
var parent = tree.getNodeById('ABC123'); 
parent.appendChild(child); 

它甚至会自动地从原来的点删除节点,它甚至移动的移动节点的任何子女。

请注意,此时只能在一个节点上工作(即使它正在使用selectedNodes),我会在稍后发布更实质的内容。

1

这是一次剪切和粘贴,可以同时用于多个节点。该版本还会隐藏任何已被“剪切”的节点,并在粘贴之前不会再显示它们。在粘贴期间它只会使用第一个节点,其他所有节点都将被忽略。

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

} 
相关问题