Как обновить содержимое узла в 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. Это довольно уродливая халтура, но она должна сработать.
надеюсь, кто-то еще может получить что-то из этого. Удачи.