2010-09-30 3 views
1

Je ne connais pas très bien ExtJS, mais je travaille sur un projet qui l'utilise.ExtJS TreeLoader Problème

Nous utilisons un TreePanel avec un TreeLoader qui charge toutes les données de noeud du serveur en un seul appel. Nous avons un événement dans lequel j'ai besoin d'accéder aux attributs de chaque nœud de l'arbre. La façon dont je fais ceci utilise la méthode getNodeById de TreePanel. Le problème est que le panneau d'arbre semble charger paresseusement les nœuds et ne sera pas capable de récupérer un nœud avec getNodeById à moins que le nœud n'ait déjà été chargé.

Existe-t-il un moyen de forcer le chargement de tous les nœuds? Le plus proche que je suis venu est en utilisant l'attribut preloadChildren sur le TreeLoader, mais cela ne se charge toujours que lorsque le nœud parent contenant des enfants est chargé.

Répondre

2

Si vous voulez pouvoir accéder à tous les nœuds, vous devez charger l'arborescence complète lors du premier appel.

La réponse JSON sur le premier appel doit inclure tous les nœuds d'arbre. Par exemple:

[{ 
    id: 1, 
    text: 'A leaf Node', 
    leaf: true 
},{ 
    id: 2, 
    text: 'A folder Node', 
    children: [{ 
     id: 3, 
     text: 'A child Node', 
     leaf: true 
    }] 

}]

+0

Hmm, c'est à peu près la façon dont nous l'avons. En utilisant votre exemple, si je fais myTreePanel.getNodeById (3), il me donnera undefined, sauf si je le force à charger en développant son parent (ou en cliquant sur son parent avec preloadChildren défini sur true dans la configuration du chargeur). –

+0

Oui, utiliser vos données, j'ai essayé les éléments suivants, qui ne fonctionne pas: var treePanel = new Ext.tree.TreePanel ({id : 'structure du panneau', chargeur: nouvelle Ext.tree.TreeLoader ({ dataURL: 'data.html', preloadChildren: true, auditeurs: { charge: function() { alerte (treePanel.getNodeById ('3'));} }} ), racine : nouveau Ext.tree.TreeNode ({ id: 'tree-root' }) }); treePanel.getLoader(). Load (treePanel.root); L'alerte dans le rappel de chargement aura "non défini" –

+0

Pourriez-vous publier un exemple de code et un exemple de réponse du serveur avec les noeuds? Merci. – ncardeli