EXTJS: treepanel перемещают ответвление программно

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

Теперь это работает все хорошо и хороший, но я должен смочь переместить ответвление программно.

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

У кого-либо есть идея того, где я должен запустить?

1
задан Narendra Jadhav 9 April 2018 в 19:04
поделиться

3 ответа

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

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

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

0
ответ дан 2 September 2019 в 22:55
поделиться

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

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

}
1
ответ дан 2 September 2019 в 22:55
поделиться

Ок, я нашел решение, и оно оказалось очень, ОЧЕНЬ простым:

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

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

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

1
ответ дан 2 September 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: