У меня есть Ext TreePanel
, к которому я пытаюсь добавить пагинацию на стороне сервера. Мы используем Ext 2.2.0.
У нас есть настроенное дерево, которое имеет только два уровня. Мы перечисляем 25 элементов под самим деревом (корень?), Но у каждого узла элемента может быть неограниченное количество дочерних элементов. Я предполагаю, что это "лист". Узлы элементов используют пользовательский uiProvider
, как и все дочерние элементы.
Я добавил несколько изображений для предыдущей / следующей страницы в itemNodeUI
и добавил обработчики, которые обновляют атрибуты узла элемента с помощью pageNumber. Файл DataUrl
php захватывает эти атрибуты и в основном добавляет LIMIT
к запросу sql.
Все работает должным образом, за исключением того, что при нажатии следующих / предыдущих изображений узел элемента разрушается. Если вы развернете узел, все будет так, как должно быть, но мне нужно, чтобы узел оставался расширенным, или чтобы он автоматически расширялся после загрузки. Я пытался использовать 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);
}
1020 *
*
Другая проблема, с которой я столкнулся, заключается в том, что itemNodeUI
, который расширяет TreeNodeUI
, не обновляется при вызове вышеупомянутой функции. Таким образом, текст, показывающий, сколько результатов отображается, не меняется с первой страницы. Есть ли способ обновить этот узел и развернуть его без перезагрузки всего дерева?
Если есть лучший или более простой способ, которым я должен это делать, я ценю любой ваш вклад. Я Ext.NEWB, так что почти все, что я делаю, это «хак». ;)
Edit:
Мне почти стыдно это признавать, но я полностью смог решить проблему свертывания, используя treeNode.reload()
вместо повторного load()
самого загрузчика. Вздох ...
treeNode.getLoader().load(treeNode);
должно было быть:
treeNode.reload();
Однако мне все еще нужно выяснить, как обновить сам узел, чтобы текст, показывающий результаты, и кнопки «предыдущий / следующий» отображались правильно. Я пытался использовать:
treeNode.parentNode.reload();
... но все, что делает, это освежает все дерево. Я просто хочу обновить сам itemNode. Есть мысли?
Заранее большое спасибо!