ExtJs: Дерево: как загрузить, а затем выбрать с помощью вызовов AJAX? - PullRequest
0 голосов
/ 10 января 2010

Вот моя цель: - открыть дерево - скачать корневые узлы - автоматически расширять один конкретный узел, используя AJAX (и цикл n раз здесь), пока я не найду лист, затем выберите лист

Вот функция, которая работает, когда я объявляю дерево:

        listeners: {
            load: function(n) {
                console.log('load(n)');
                n.eachChild(
                    function(n) {
                        if ((n.id=='lys/2007') ||
                            (n.id=='lys/2007/08') ||
                            (n.id=='lys/2007/08/29')) {
                            n.expand(false,false);
                        }
                    });
            }
        }

Но если я не знаю, как сделать его более "родовым" (почти так же, как документация ExtJs ). Но они не переходят автоматически на конкретный узел (т. Е. Я не хочу взаимодействия с пользователем).

Есть идеи / советы, как это сделать?

Не стесняйтесь редактировать мой пост, чтобы он был на английском языке:)

Ответы [ 2 ]

0 голосов
/ 11 января 2010

Спасибо за ответ. Вот код, который работает: я переместил его наружу, в объект TreeLoader, таким образом:

var lysTreeLoader = new Ext.tree.TreeLoader({
    dataUrl: 'json/lys.php',
    listeners: {
        load: function(loader,n,response) {
        console.log('Données chargées');
        n.eachChild(
            function(n) {
                if ((n.id=='lys/2007') ||
                    (n.id=='lys/2007/08') ||
                    (n.id=='lys/2007/08/29')) {
                    n.expand(false,false);
                }
                if (n.id=='lys/2007/08/29/21_14_04') {
                    n.select();
                    console.log(n.id);
                    console.log(n.getPath());
                }
            });
        }
    }
});

Затем в объявлении дерева объявите lysTreeLoader:

...blabla...
id: 'treepanel-labys',
xtype: 'treepanel',
width: 400,
autoScroll: true,
split: true,
// use a TreeLoader :
loader: lysTreeLoader,
...blabla...

И мне просто нужно было использовать функцию select (); (что не сработало, как ожидалось в моем вопросе)

Еще раз спасибо!

0 голосов
/ 11 января 2010

Если у вас уже есть дескриптор вашего узла, используйте node.getPath(), чтобы получить полный «путь» его, а затем используйте selectPath, чтобы «выбрать» его программно.

tree.selectPath(node.getPath());

Поскольку вы, кажется, знаете точный путь, вы, вероятно, можете просто вызвать selectPath на дереве.

tree.selectPath('lys/2007/08/29'); //adjust to match node.getPath() format
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...