У меня есть Расширение TreePanel
к которому я пытаюсь добавить некоторое разбиение на страницы серверной стороны. Мы используем Расширение 2.2.0.
У нас есть специализированное дерево, которое только имеет два уровня. Мы - объекты списка 25 под самим деревом (корень?), но каждый узел объекта может иметь неограниченное количество детей. Я предполагаю, что это "лист" s. Узлы объекта используют пользовательское uiProvider
, как все дети.
Я добавил некоторые изображения для предыдущей / следующей страницы к itemNodeUI
и добавленные обработчики, который обновляет атрибуты узла объекта с pageNumber. DataUrl
файл php захватывает эти атрибуты и в основном добавляет LIMIT
к запросу SQL.
Все работает, как это должно, кроме тех случаев, когда Вы нажимаете на следующие/предыдущие изображения, коллапсы узла объекта. При расширении узла все - как это должно быть, но мне или нужен узел для пребывания расширенным, или иметь его автоволшебно повторно расширяются после загрузки. Я попытался использовать expand()
, fireEvent('expand')
, expandChildNodes
, целые девять ярдов.Ничего.
Вот функция, которой это называют при нажатии на кнопку 'Previous Page':
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
, 'не обновляется', когда вышеупомянутая функция вызвана. Таким образом, текст, который показывает, сколько результатов показывают, не изменяется от первой страницы. Существует ли способ обновиться, этот узел также и иметь его расширяются, не перезагружая целое дерево?
Если существует лучший или более легкий способ, которым я должен делать это, я ценю любой вход, который Вы имеете. Я - Расширение. NEWB, так в значительной степени все, что я делаю, является 'взломом'.;)
Править:
Я почти смущен для принятия этого, но я полностью смог решить выходящий из строя вопрос при помощи treeNode.reload()
вместо пере -load()
- луг сам загрузчик. вздох...
treeNode.getLoader().load(treeNode);
должен был быть:
treeNode.reload();
Я все еще должен, однако, выяснить, как обновить сам узел так, чтобы текст, показывающий результаты и предыдущие/следующие кнопки, показал правильно. Я попытался использовать:
treeNode.parentNode.reload();
... но все, что делает, обновить целое дерево. Я просто хочу, чтобы сам itemNode был обновлен. Какие-либо мысли?
Заранее большое спасибо!
Ну, я практически только что присвоил каждому элементу HTML уникальный идентификатор и использую Ext.get для обновления стилей css и innerHTML. Это довольно уродливая работа, но она должна сойтись.
Надеюсь, что кто-то еще сможет извлечь из этого хоть какую-то пользу. Удачи.