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
});
Puede volver a cargar el árbol utilizando un proxy de memoria. Vea la respuesta en Cómo actualizar la lista anidada / Tree Store en Sencha Touch?