2012-01-19 32 views
6

que tienen una tienda:datos Recarga de una tienda en ExtJS 4

var store = new Ext.data.store({ 
       autoLoad: true, 
       autoSync: true, 
       model: 'myModel', 
       proxy: { 
        type: 'rest', 
        url: '/url/to/my/json/encoded/results', 
        reader: { 
         type: 'json', 
         root: 'results' 
        }, 
        writer: { 
         type:'json' 
        } 
       } 
      }); 

Cuál es la tienda para algunos cuadrícula en la que puedo mostrar los resultados. Mi rejilla está configurado de la siguiente manera:

var myGrid = new Ext.grid.Panel({ 
       id:'myGridID', 
       layout:'anchor', 
       border:false, 
       title:'My Grid', 
       width:412, 
       store:store, 
       heigth:300, 
       frame:false, 
       .... etc 

En algún momento me añadir una entrada a mi base de datos, que funciona muy bien (si vuelvo a cargar la página veo el registro recién agregado en mi red). Lo que quiero hacer es volver a cargar la cuadrícula para que cuando guarde esa entrada en mi base de datos, la tienda y la cuadrícula se actualicen y muestren el registro recién agregado sin tener que volver a cargar toda la página.

me trataron:

Ext.getCmp('myGridID').getStore().reload(); 

y ...

Ext.getCmp('myGridID').getStore().load(); 

y ...

Ext.getCmp('myGridID').getView().refresh(); 

y también he intentado fijar la tienda como Ext.data.JsonStore pero no hace nada

Pero nada funciona, he estado buscando en Internet sin éxito.

Cualquier ayuda es apreciada.

+1

Lo que ocurre cuando se intenta ejecutar simplemente: 'myGrid.getStore load()();' ' – Chewpers

+1

Ext.getCmp ('myGridID') getStore load()();' debería funcionar –

+0

.. Tal vez vuelva a cargar la tienda, pero aún tengo que volver a cargar la página web para ver el nuevo registro en la cuadrícula – lascort

Respuesta

15

Esto definitivamente debe trabajar:

Ext.getCmp('myGridID').getStore().load(); 

¿Usted está consiguiendo los errores de javascript cuando se utiliza la sintaxis anterior? Si es así, ver el mensaje de error específico puede dar algunas pistas.

Además, SIEMPRE SIEMPRE utilice las herramientas de desarrollo de Chrome (o Firebug o IE Developer Toolbar si le gusta Firefox/IE). En este caso, desea ver si una solicitud AJAX está saliendo a/url/a/my/json/codificado/resultados. Eso al menos le dirá si la llamada para actualizar la tienda está llegando a su servidor.

Supongo que no, y es muy probable que se haya generado un mensaje de error. Probablemente algo así como "No se puede llamar al método 'getStore' de undefined"

Esto al menos le informará que no está obteniendo una referencia de su red. Desde allí, verifique que no haya duplicado "myGridID" para otro elemento o algo así de tonto.

Puede producir alguna información a la consola de herramientas para desarrolladores de Chrome para ayudar a depurar, a partir de:

console.log(Ext.getCmp('myGridID')); 

ver si es indefinido, o devuelve una referencia a la parrilla. Si no está definido, probablemente esté duplicando la identificación, o tal vez intente recargar la grilla antes de que el componente haya sido creado (ver su código en un contexto más amplio de su aplicación ayudaría a determinarlo).

Si se devuelve correctamente una referencia al componente de la red y, a continuación, seguir hacia abajo la línea:

console.log(Ext.getCmp('myGridID').getStore()); 

De todos modos, eso es probablemente demasiado explicación para algo que probablemente ya ha resuelto por ahora. Quizás sea útil para otra persona.

0

ver mi código:

respuesta var = Ext.decode (resultado); // JSON desde algún lugar

store.proxy = new Ext.ux.data.PagingMemoryProxy (response);

grid.store = store;

store.load ({params: {start: 0, limit: 20}});

grid.getView(). Refresh();

2

si desea volver a cargar sus datos, debe ver los cambios. Quiero decir, poner estos códigos juntos:

Ext.getCmp('idMyGrid').getStore().load(); 
Ext.getCmp('idMyGrid').getView().refresh(); 

Esto es trabajo para mí. Espero que eso te funcione también.

De Chile chorizo, Saluds.

9

Prueba esto funcionó para mí probado en la versión 3.x

Ext.getCmp ('idMyGrid') store.load (.);

también se puede utilizar

Ext.getCmp ('idMyGrid') store.reload (.);

si quieres pasar parámetros a la petición de almacenamiento de carga

Ext.getCmp ('idMyGrid') store.load ({params: {paramName: paramValue}}).; Ext.getCmp ('idMyGrid'). Store.reload ({params: {paramName: paramValue}}); .

Cuestiones relacionadas