Après avoir opéré sur les nœuds de l'arborescence, il est souvent nécessaire d'effectuer une opération de rechargement pour actualiser l'arborescence, mais de nombreuses entreprises doivent sélectionner par défaut le dernier nœud sélectionné après l'actualisation de l'arborescence. De cette manière, les informations du nœud précédemment sélectionné doivent d'abord être enregistrées, puis étendues à nouveau à travers les informations du nœud jusqu'à ce nœud couche par couche après le rechargement.
Après une longue interrogation, j'ai finalement trouvé une solution réalisable, qui consiste à enregistrer les informations de localisation du nœud via le chemin du nœud, puis à les étendre couche par couche en commençant par le nœud racine jusqu'à le chemin jusqu'au dernier nœud.
Le code complété est le suivant :
Le premier est la méthode en version extjs3.x :
//Obtenir le nœud sélectionné
var node = tree.getSelectionModel().getSelectedNode();
if(node == null) { //Aucun nœud resélectionné Charger l'arborescence
tree.getRootNode().reload(); else { //Recharger l'arborescence et sélectionner le dernier nœud sélectionné par défaut
var path = node.getPath('id');
tree.getLoader().load(tree.getRootNode(),
function(treeNode) {
tree.expandPath(path, 'id', function(bSucess , oLastNode) {
tree.getSelectionModel ().select(oLastNode);
},
}
Différent de Extjs3.0 , Extjs4.2 s'écrit comme suit
idPath = selNode.getPath("id");
tree. getStore().load({
node: tree.getRootNode(),
callback: function() {
tree.expandPath(idPath , 'id');
}
}) ;
Il est à noter que le nœud dans les données json de l'arbre renvoyé en arrière-plan doit contenir l'attribut id à l'origine. Je n'avais pas cet attribut, mais j'ai modifié le paramètre de la méthode getPath par un autre attribut. Les faits ont prouvé que cela n'est pas efficace, et finalement l'attribut id a été ajouté à json pour réussir.