2010-03-10 14 views
6

Ich habe eine Ext TreePanel, die ich versuche, einige serverseitige Paginierung hinzuzufügen. Wir verwenden Ext 2.2.0.Wie aktualisiert man den Inhalt eines Knotens in einem Ext.tree.treePanel?

Wir haben einen benutzerdefinierten Baum, der nur zwei Ebenen hat. Wir führen 25 Elemente unter dem Baum selbst auf (die Wurzel?), Aber jeder Elementknoten kann eine unbegrenzte Anzahl von Kindern haben. Ich vermute, das sind die "Blätter". Die Elementknoten verwenden wie alle untergeordneten Elemente eine benutzerdefinierte uiProvider.

Ich habe der itemNodeUI einige Bilder für die vorherige/nächste Seite hinzugefügt und Handler hinzugefügt, die die Attribute des Elementknotens mit der Seitennummer aktualisieren. Die DataUrl PHP-Datei ergreift diese Attribute und fügt im Wesentlichen LIMIT an die SQL-Abfrage an.

Alles funktioniert wie es sollte, außer wenn Sie auf die nächsten/vorherigen Bilder klicken, der Objektknoten kollabiert. Wenn Sie den Knoten erweitern, ist alles so, wie es sein sollte, aber ich brauche entweder den Knoten, um expandiert zu bleiben, oder ihn nach dem Laden automatisch zu erweitern. Ich habe versucht mit expand(), fireEvent('expand'), expandChildNodes, die ganze neun Meter. Nichts.


Hier ist die Funktion, die auf der ‚Vorherige Seite‘ Taste aufgerufen wird, wenn klicken:

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); 
    } 



Ein weiteres Problem ist, ich habe, dass die itemNodeUI, die TreeNodeUI erstreckt, ist 'nicht sein aktualisiert, wenn die obige Funktion aufgerufen wird. Der Text, der anzeigt, wie viele Ergebnisse angezeigt werden, ändert sich daher nicht gegenüber der ersten Seite. Gibt es eine Möglichkeit, diesen Knoten ebenfalls zu aktualisieren und ihn erweitern zu lassen, ohne den gesamten Baum neu zu laden?


Wenn es einen besseren oder einfacheren Weg gibt, sollte ich dies tun, ich schätze jede Eingabe, die Sie haben. Ich bin eine Ext.NEWB, also ist alles, was ich mache, ein "Hack". ;)


Edit:

Ich bin fast peinlich, das zuzugeben, aber ich war völlig durch den kollabierenden Problem beheben können treeNode.reload() statt Wieder- load() -ing den Lader selbst verwenden. Seufzer ...

treeNode.getLoader().load(treeNode); 

hätte sein sollen:

treeNode.reload(); 


ich immer noch, jedoch müssen um herauszufinden, wie die Knoten selbst zu aktualisieren, so dass der Text die Ergebnisse zeigt, und die Tasten prev/next werden korrekt angezeigt. Ich habe versucht mit:

... aber alles, was tut, ist der gesamte Baum zu aktualisieren. Ich möchte nur, dass der itemNode selbst aktualisiert wird. Irgendwelche Gedanken?


Vielen Dank im Voraus!

Antwort

0

Nun, ich habe so ziemlich jedes HTML-Element mit einer eindeutigen ID zugewiesen und verwende Ext.Holen Sie sich die CSS-Stile und innerHTML zu aktualisieren. Es ist ein ziemlich hässlicher Hack-Job, aber es wird reichen müssen.

Hoffentlich kann jemand anderes etwas davon aber bekommen. Viel Glück.

Verwandte Themen