J'ai un Ext TreePanel
auquel j'essaye d'ajouter une pagination côté serveur. Nous utilisons Ext 2.2.0.Comment actualiser le contenu d'un noeud dans un Ext.tree.treePanel?
Nous avons un arbre personnalisé qui a seulement deux niveaux. Nous listons 25 éléments sous l'arbre lui-même (la racine?), Mais chaque nœud d'élément peut avoir un nombre illimité d'enfants. Je suppose que ce sont les "feuilles". Les nœuds d'élément utilisent un uiProvider
personnalisé, comme tous les enfants.
J'ai ajouté quelques images pour la page précédente/suivante au itemNodeUI
et des gestionnaires ajoutés qui mettent à jour les attributs du nœud de l'article avec le numéro de page. Le fichier php DataUrl
saisit ces attributs et ajoute LIMIT
à la requête SQL.
Tout fonctionne comme il se doit, sauf lorsque vous cliquez sur les images suivantes/précédentes, le nœud d'élément se réduit. Si vous développez le noeud, tout est comme il se doit, mais j'ai besoin que le noeud reste étendu, ou qu'il se redimensionne automagiquement après chargement. J'ai essayé d'utiliser expand()
, fireEvent('expand')
, expandChildNodes
, les neuf yards entiers. Rien.
est ici la fonction qui est appelée en cliquant sur le bouton « Page précédente »:
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);
}
Une autre question que je vais avoir est que le itemNodeUI
, qui étend TreeNodeUI
, n'est pas ' actualisé lorsque la fonction ci-dessus est appelée. Ainsi, le texte qui montre combien de résultats sont affichés ne change pas à partir de la première page. Existe-t-il un moyen de rafraîchir ce noeud et de le développer, sans recharger tout l'arbre?
S'il y a un moyen meilleur ou plus simple de le faire, j'apprécie vos commentaires. Je suis un Ext.NEWB, donc à peu près tout ce que je fais est un 'hack'. ;)
Edit:
Je suis presque gêné de l'admettre, mais je suis tout à fait capable de résoudre le problème en utilisant l'effondrement treeNode.reload()
au lieu de load()
re -ment le chargeur lui-même. soupir ...
treeNode.getLoader().load(treeNode);
aurait dû être:
treeNode.reload();
I cependant, ne encore, besoin de comprendre comment actualiser le nœud lui-même afin que le texte montrant les résultats, et les boutons prev/next, s'affichent correctement. J'ai essayé d'employer:
treeNode.parentNode.reload();
... mais tout ce qui fait est régénérer l'arbre entier. Je veux juste que l'ItemNode lui-même soit mis à jour. Des pensées?
Merci beaucoup d'avance!