EXTJS: древовидная панель перемещает ветку программно - PullRequest
1 голос
/ 20 июля 2010

У меня есть дерево, где пользователи могут перетаскивать ветви.

Теперь все работает хорошо, но мне нужно иметь возможность программно перемещать ветку.

Мне нужно смоделировать вырезание и вставку (пользователь будет использовать кнопки вместо Ctrl - X и V ).

Кто-нибудь знает, с чего мне начать?

Ответы [ 3 ]

1 голос
/ 26 июля 2010

Хорошо, я нашел решение, и оно оказалось действительно, ДЕЙСТВИТЕЛЬНО простым:

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

он даже автоматически удалит узел из исходного места и даже переместит любые дочерние элементы перемещенного узла.

Обратите внимание, что на данный момент это будет работать только на одном узле (даже если он использует выбранные узлы), позже я опубликую что-то более существенное.

1 голос
/ 27 июля 2010

Вот вырезка и вставка, которая будет работать для нескольких узлов одновременно. Эта версия также скрывает все узлы, которые были «вырезаны», и не будет показывать их снова, пока они не будут вставлены. во время вставки будет использоваться только первый выбранный узел, все остальные будут просто игнорироваться.

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

}
0 голосов
/ 22 июля 2010

Я никогда не играл с этим методом, поэтому я не могу дать вам полное решение, но класс TreePanel имеет метод movenode со следующими аргументами: Дерево дерева, Узел узла, Узел oldParent, Узел newParent, Числоindex

Есть также события, связанные с этим методом.Надеюсь, это поможет.

РЕДАКТИРОВАТЬ - я читаю API слишком быстро, это события.Я думаю, что единственный способ сделать это вручную - использовать методы appendChild и removeChild.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...