2011-08-23 27 views
5

He anidado la lista con treestore. Mientras carga la primera vez, la tienda se carga perfectamente y la lista se muestra según la tienda. Cuando hago clic en el botón Actualizar, mi arbolado debe volver a cargarse con nuevos datos (con el mismo modelo de datos que la primera vez) y la lista anidada también debe volver a cargarse con un nuevo conjunto de datos.¿Cómo volver a cargar TreeStore?

A continuación es mi definición treestore

rightPaneStoreData = getFolderListData(); 

rightPaneStore =new Ext.data.TreeStore({ 

    autoLoad:false, 

    model: 'FIMT.models.rightPaneModel', 

    root: rightPaneStoreData, 
    proxy: { 

    type: 'memory', 

    reader: { 

     type: 'tree', 
     root: 'items' 
     } 

    }, 
    listeners: { 
     datachanged: function(records){ 
      alert("datachanged"); 
      } 
    } 

    }); 

rightPaneStore.load(); 

En Ext.data.JsonStore que he logrado utilizando el método mismo store.loaddata(). Pero no pude encontrar el método loaddata() para TreeStore.

Amablemente ayúdame.

Respuesta

0

El TreePanel no tiene una tienda como JsonStore. Muestra automáticamente todos los nodos y vuelve a cargar cuando sea necesario.

En caso de que su rootNode (rightPaneStoreData) es un AsyncTreeNode (cargado a través de AJAX), que puede utilizar:

rightPaneStoreData.reload()
(porque rightPaneStoreData es su nodo raíz).

o alternativamente (más genérico):
tree.root.reload();
(donde el árbol es una referencia a su árbol)

Si no es un ASyncTreeNode, tendrá que hacerlo manualmente. Llame de nuevo a su función getFolderListData() y asigne la nueva raíz al árbol. (tree.setRootNode())

+0

lo anterior sugirió dos fragmentos de código no funcionó para mí – shatthi

+0

¿Hay algún error en la consola? (¿Chrome Devtools/Firefox Firebug?) –

+0

Sí, en Chrome, dice que reload() no está disponible para mi referencia de datos de almacén derecho y referencia de almacén de árboles. – shatthi

9

Esto funciona para mí. Estoy usando MVC y este código se llama en mi controlador.

treeStore.getRootNode().removeAll(); 
treeStore.load(); 
+0

treeStore.getRootNode(). RemoveAll(); es exactamente lo que necesitaba para evitar llamadas ajax simultáneas para cada nodo cuando treeStore.load(); se llama –

+0

Esto está funcionando pero, ¿tienes alguna idea de por qué se está tomando demasiado tiempo para eliminar registros de mi arbolado – Dibish

0
treeStore.getRootNode().removeAll(); 
treeStore.setRootNode({ 
    id: rootNodeId, 
    text: 'root' 
    // other configs in root 
}); 
// if you had non-standard children loads, then you would need to call: 
treeStore.getProxy().load(); 
// if you had non-standard children loads, and you had params in your load, then you would need to call: 
treeStore.getProxy().load({ 
    params: { 
    node: rootNodeId 
    } 
}); 
0
// Remove all current children if clear on load not set 
if (!treeStore.clearOnLoad) { 
    record.removeAll(); 
} 

// Call load, refreshing our view when done... 
var viewRefresher = function() { 
    view.refresh(); 
}; 

treeStore.load({ 
    node: record, 
    callback: viewRefresher 
}); 
Cuestiones relacionadas