Nach der Bearbeitung von Baumknoten ist es häufig erforderlich, einen Neuladevorgang durchzuführen, um den Baum zu aktualisieren. Viele Unternehmen müssen jedoch nach der Aktualisierung des Baums standardmäßig den zuletzt ausgewählten Knoten auswählen. Auf diese Weise müssen zunächst die Informationen des zuvor ausgewählten Knotens gespeichert und nach dem erneuten Laden erneut Schicht für Schicht durch die Knoteninformationen auf diesen Knoten erweitert werden.
Nach langem Abfragen habe ich endlich eine praktikable Lösung gefunden, die darin besteht, die Standortinformationen des Knotens über den Pfad des Knotens aufzuzeichnen und sie dann Schicht für Schicht, beginnend vom Wurzelknoten bis, zu erweitern der Pfad bis zum letzten Knoten.
Der fertige Code lautet wie folgt:
Die erste ist die Methode in der extjs3.x-Version:
//Den ausgewählten Knoten abrufen
var node = tree.getSelectionModel().getSelectedNode();
if(node == null) { //Kein erneut ausgewählter Knoten. Baum laden
tree.getRootNode().reload();
} else { //Den Baum neu laden und standardmäßig den zuletzt ausgewählten Knoten auswählen
var path = node.getPath('id');
tree.getLoader().load(tree.getRootNode(),
function(treeNode) {
tree.expandPath(path, 'id', function(bSucess , oLastNode) {
tree.getSelectionModel ().select(oLastNode);
},
}
Anders als Extjs3.0 , Extjs4.2 ist wie folgt geschrieben
idPath = selNode.getPath("id");
tree. getStore().load({
node: tree.getRootNode(),
callback: function () {
tree.expandPath(idPath , 'id');
}
}) ;
Es ist zu beachten, dass der Knoten in den im Hintergrund zurückgegebenen JSON-Daten das id-Attribut enthalten muss Ich hatte dieses Attribut nicht, aber ich habe den Parameter in der getPath-Methode in ein anderes Attribut geändert. Fakten haben gezeigt, dass dies nicht effektiv ist, und schließlich wurde das ID-Attribut zu JSON hinzugefügt, um erfolgreich zu sein.