2009-10-15 25 views
7

Quiero crear el componente Ext.tree.TreePanel y cargar periódicamente contenido desde el URl externo. Por lo que he escrito algo así comoCómo recargar Ext.tree.TreePanel bajo demanda?

new Ext.tree.TreePanel({ 
     root: { 
      nodeType: 'async', 
      text: 'asdasd', 
      draggable: false, 
      id: 'folders-tree-root' 
     }, 
     loader: new Ext.tree.TreeLoader() 
}); 

Y ahora quiero volver a cargar este árbol, por lo que escribo:

tree.loader.dataUrl = 'folders-sample.json'; 
tree.root.reload(); 

y no pasa nada.

añadir: La única forma que he encontrado se establece un valor no válido para dataUrl parámetro en TreeLoader la creación:

new Ext.tree.TreePanel({ 
     root: { 
      nodeType: 'async', 
      text: 'asdasd', 
      draggable: false, 
      id: 'folders-tree-root' 
     }, 
     loader: new Ext.tree.TreeLoader(dataUrl: 'something') 
}); 

Respuesta

7

Lo que estamos buscando es el método para la load TreeLoader. Entonces algo como esto debería funcionar dado tu ejemplo.

tree.getLoader().load(tree.root); 

Aquí está mi ejemplo completo que está disponible en mi sitio demo también. Es un poco artificial y hackeado juntos desde una de las demostraciones de ExtJS, pero debe conseguir lo que necesita.

Ext.onReady(function() { 
    var root = new Ext.tree.AsyncTreeNode({ 
     text: 'Ext JS', 
     id: 'src' 
    }); 
    var reloadTree = function() { 
     tree.enable(); 
     tree.getLoader().dataUrl = 'get-nodes2.php'; 
     tree.getLoader().load(tree.root); 
    }; 

    var tree = new Ext.tree.TreePanel({ 
     animate: true, 
     autoScroll: true, 
     nodeType: 'async', 
     loader: new Ext.tree.TreeLoader(), 
     containerScroll: true, 
     border: false, 
     disabled: true, 
     id: 'myTree' 
    }); 

    var myPanel = new Ext.Panel({ 
     items: tree, 
     border: false, 
     tbar: [{ 
      text: 'Refresh', 
      handler: reloadTree 
     }] 
    }); 

    tree.setRootNode(root); 
    myPanel.render('tree'); 
}); 

Saludos

+0

creo que tu ejemplo dejará de funcionar cuando se elimina '{DataURL: 'get-nodes.php'}' TreeLoader de llamada al constructor. En mi caso extiendo Ext.tree.TreePanel, pero utilizo un código similar y no funciona después de eliminar la definición 'dataUrl: 'fake-url''. –

+0

He actualizado el ejemplo para no usar un valor dataUrl en el constructor. Debido a esto, inicialmente deshabilito el árbol porque no tiene datos. Haga clic en el botón Actualizar, el árbol se carga y se habilita. – rwilliams

Cuestiones relacionadas