Как обновить содержимое узла в Ext.дерево.treePanel?

у меня есть Ext TreePanel к которому я пытаюсь добавить некоторые серверные страницы. Мы используем Ext 2.2.0.

мы имеем подгонянное дерево которое только имеет 2 яруса. Мы перечисляем 25 элементов под самим деревом (корень?), но каждый узел элемента может иметь неограниченное количество дочерних элементов. Я предполагаю, что это "листья". Узлы элементов используют пользовательский uiProvider, как и все дети.

я добавил Некоторые изображения для prev / next страницы в itemNodeUI и добавлены обработчики, которые обновляют атрибуты узла элемента с помощью pageNumber. The DataUrl php файл захватывает эти атрибуты и в основном добавляет LIMIT запрос SQL.

все работает так, как должно, за исключением того, когда вы нажимаете на следующие/prev изображения, узел элемента сворачивается. Если вы развернете узел, все будет так, как должно быть, но мне либо нужно, чтобы узел оставался расширенным, либо он автоматически повторно расширяется после загрузки. Я пробовал использовать expand(), fireEvent('expand'), expandChildNodes, в целых Девять ярдов. Ничего.


Вот функция, которая вызывается при нажатии на кнопку "Предыдущая страница":

    onPaginationPrevButtonClick: function(e,t) {
        var parentEl = Ext.get(t).findParentNode('.x-tree-node-ct', 10, false).previousSibling;
        var treeNodeId = parentEl.getAttribute('ext:tree-node-id');
        var treeNode = this.tree.getNodeById(treeNodeId);
        var currentPage = parseInt(treeNode.attributes.pageNumber);

        if (currentPage > 0) {
            treeNode.attributes.pageNumber = currentPage - 1;
        }

        treeNode.getLoader().load(treeNode);
    }



Еще одна проблема, с которой я сталкиваюсь, - это itemNodeUI, которая расширяет TreeNodeUI, не "обновляется" при вызове вышеуказанной функции. Таким образом, текст, который показывает, сколько результатов отображается, не изменяется с первой страницы. Есть ли способ обновить этот узел и развернуть его без перезагрузки целое дерево?


Если есть лучший или более простой способ сделать это, я ценю любой вклад, который у вас есть. Я Ext.НЬЮБ, почти все, что я делаю, - это халтура.';)


Edit:

мне почти стыдно признать это, но я был полностью в состоянии решить проблему коллапса с помощью treeNode.reload() вместо re -load()-ing сам загрузчик. вздох...

treeNode.getLoader().load(treeNode);

должны были бывало:

treeNode.reload();


Однако мне все еще нужно выяснить, как обновить сам узел, чтобы текст, показывающий результаты, и кнопки prev/next, отображались правильно. Я пробовал использовать:

treeNode.parentNode.reload();

...но все, что делает это обновляет все дерево. Я просто хочу, чтобы сам itemNode был обновлен. Есть мысли?


заранее большое спасибо!

1 ответов


Ну, я в значительной степени просто назначил каждый элемент HTML с уникальным идентификатором и использую Ext.получить, чтобы обновить стили css и innerHTML. Это довольно уродливая халтура, но она должна сработать.

надеюсь, кто-то еще может получить что-то из этого. Удачи.