2010-01-10 7 views
0

Voilà mon objectif: - ouvrir un arbre - télécharger les nœuds racine - Élargissez automatiquement un nœud spécifique en utilisant AJAX (et en boucle n fois ici) jusqu'à ce que je trouve une feuille puis sélectionnez la feuilleExtJs: Tree: comment télécharger puis sélectionner en utilisant les appels AJAX?

est ici la fonction fonctionne quand je déclare l'Arbre:

 listeners: { 
      load: function(n) { 
       console.log('load(n)'); 
       n.eachChild(
        function(n) { 
         if ((n.id=='lys/2007') || 
          (n.id=='lys/2007/08') || 
          (n.id=='lys/2007/08/29')) { 
          n.expand(false,false); 
         } 
        }); 
      } 
     } 

Mais si je ne sais pas comment le rendre plus « générique » (presque exactement comme le ExtJs documentation). Mais ils ne sautent pas automatiquement vers un nœud spécifique (c'est-à-dire que je ne veux pas d'interaction de l'utilisateur).

Une idée/un conseil comment faire ceci?

Ne hésitez pas à modifier mon message pour le rendre anglais correct :)

Répondre

0

Merci pour la réponse. est ici le code qui fonctionne: je me suis déplacé à l'extérieur, dans l'objet TreeLoader, de cette façon:

var lysTreeLoader = new Ext.tree.TreeLoader({ 
    dataUrl: 'json/lys.php', 
    listeners: { 
     load: function(loader,n,response) { 
     console.log('Données chargées'); 
     n.eachChild(
      function(n) { 
       if ((n.id=='lys/2007') || 
        (n.id=='lys/2007/08') || 
        (n.id=='lys/2007/08/29')) { 
        n.expand(false,false); 
       } 
       if (n.id=='lys/2007/08/29/21_14_04') { 
        n.select(); 
        console.log(n.id); 
        console.log(n.getPath()); 
       } 
      }); 
     } 
    } 
}); 

Puis dans la déclaration d'arbre, déclarer la lysTreeLoader:

...blabla... 
id: 'treepanel-labys', 
xtype: 'treepanel', 
width: 400, 
autoScroll: true, 
split: true, 
// use a TreeLoader : 
loader: lysTreeLoader, 
...blabla... 

Et je devais utiliser la fonction select(); (qui n'a pas fonctionné comme prévu dans ma question)

Merci encore!

0

Si vous avez déjà une poignée à votre nœud, utilisez node.getPath() pour obtenir le « chemin » complet de celui-ci, puis utiliser selectPath à "sélectionnez" par programme.

tree.selectPath(node.getPath()); 

Puisque vous semblez connaître le chemin exact, vous pouvez probablement appeler selectPath sur l'arbre.

tree.selectPath('lys/2007/08/29'); //adjust to match node.getPath() format