Как получить индекс выбранного узла в дереве extjs? - PullRequest
0 голосов
/ 08 марта 2012

У меня на странице 2 дерева.На странице есть форма.Одно дерево отображается на странице, а другое внутри формы.Я создал деревья, как показано ниже:

var myTree1 = Ext.create('Ext.tree.Panel', {
    store: store,  //where store is hardcoded json tree data
    ....
});

аналогично myTree2 объявлен с другим хранилищем.Это показано внутри формы.Когда я выбираю любой узел в myTree2 и нажимаю кнопку «Создать», я должен иметь возможность добавить новый листовой узел в myTree1 с тем же индексом.

Нужна помощь:1. Как получить индекс выбранного узла.2. Как перейти к индексу в myTree1, должен быть равен выбранный индекс myTree2.3. Как добавить листовой узел по определенному индексу.

1 Ответ

2 голосов
/ 08 марта 2012

Для справки:
Ext JS 4 TreePanel документация
Ext JS 4 NodeInterface документация

  1. Событие select предоставляет и индекс, и запись. Если вам нужен общий доступ к нему, myTree1.getSelectionModel().getSelection() вернет массив записей, которые вы можете затем проверить в хранилище, чтобы получить индекс.

  2. Я предполагаю, что вы хотите сравнить выбранные записи на обоих деревьях. Учитывая образец в # 1, попробуйте это:

    var tree1rec = myTree1.getSelectionModel().getSelection[0],
        tree2rec = myTree2.getSelectionModel().getSelection[0];
    // Perform comparison logic here
    // Note that if you're using two different stores, you can't
    // just do an equality test. You'll probably have to compare
    // individual store values.
    
  3. Узлы вставляются относительно существующих узлов в дереве. Так что если у вас есть событие нажатия кнопки:

    function onButtonClick(button, eOpts) {
        var rec = myTree1.getSelectionModel().getSelection[0];
        if (rec) {
            var childNode = rec.createNode(/* some object here */);
            rec.appendChild(childNode);
        }
    }
    

Детали будут различаться в зависимости от ваших фактических данных, но это общая схема.

...