sencha examples architect extjs sencha-touch

extjs - examples - sencha touch download



Cómo volver a cargar TreeStore? (5)

Tengo una lista anidada 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 de actualización, 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.

A continuación está la definición de mi almacén

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, he logrado lo mismo usando el método store.loaddata (). Pero no pude encontrar el método loaddata () para TreeStore.

Amablemente ayúdame


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 ) sea un AsyncTreeNode (cargado a través de AJAX), puede usar:

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ás que hacerlo manualmente. Llame de nuevo a su función getFolderListData() y asigne la nueva raíz al árbol. ( tree.setRootNode() )


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

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


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 } });


// 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 });