2012-01-19 12 views
6

Ho un negozio:Ricaricamento dati da un negozio a 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' 
        } 
       } 
      }); 

Qual è il negozio per un po 'griglia in cui visualizzo questi risultati. La mia griglia è configurato come segue:

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

Ad un certo punto ho aggiungere una voce al mio database, che funziona bene (se ricarico la pagina che vedo il record appena aggiunto nella mia griglia). Quello che voglio fare è ricaricare la griglia, così quando salvi quella voce nel mio database il negozio e la griglia si aggiornano e visualizzano il record appena aggiunto senza che io debba ricaricare di nuovo l'intera pagina.

ho provato:

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

e ...

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

e ...

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

e ho anche provato a installare il negozio come Ext.data.JsonStore ma non fa niente

Ma niente funziona, ho cercato su Internet per questo senza successo.

Qualsiasi aiuto è apprezzato.

+1

Che cosa succede quando si tenta di eseguire solo: 'myGrid.getStore load()();' ' – Chewpers

+1

Ext.getCmp ('myGridID') getStore load()();' dovrebbe funzionare –

+0

.. Forse ricarica il negozio, ma devo ricaricare la pagina web per vedere il nuovo record nella griglia – lascort

risposta

15

Questo dovrebbe sicuramente lavorare:

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

State ottenendo gli errori JavaScript quando si utilizza la sintassi di cui sopra? In tal caso, vedere il messaggio di errore specifico potrebbe fornire alcuni indizi.

Inoltre, utilizzare SEMPRE strumenti di sviluppo di Chrome (o Firebug o IE Developer Toolbar se si ama Firefox/IE). In questo caso, vuoi vedere se una richiesta AJAX sta per uscire a/url/a/my/json/encoded/results. Almeno questo ti dirà se la chiamata per aggiornare il negozio lo sta facendo al tuo server.

La mia ipotesi è che non lo è, e molto probabilmente si genera un messaggio di errore. Probabilmente qualcosa sulla falsariga di "Impossibile chiamare il metodo 'getStore' di undefined"

Questo ti farebbe almeno sapere che non stai ottenendo con successo un riferimento alla tua rete. Da lì, verifica di non aver duplicato "myGridID" per un altro elemento o qualcosa di simile.

È possibile uscita alcune informazioni alla console di strumenti di sviluppo Chrome per aiutare il debug, a partire da:

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

vedere se è indefinita, o restituisce un riferimento alla griglia. Se non è definito, probabilmente stai duplicando l'id, o forse stai tentando di ricaricare la griglia prima che il componente sia stato effettivamente creato (vedere il codice in un contesto più ampio dell'applicazione potrebbe aiutare a determinarlo).

Se ritorna con successo un riferimento al componente griglia, poi andare avanti su tutta la linea:

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

Comunque, questo è probabilmente il modo troppo spiegazione per qualcosa che probabilmente avete già risolto da ora. Forse sarà utile a qualcun altro però.

0

vedere il mio codice:

var risposta = Ext.decode (risultato); // JSON da qualche parte

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

grid.store = store;

store.load ({parametri: {inizio: 0, limite: 20}});

grid.getView(). Refresh();

2

se si desidera ricaricare i dati, è necessario visualizzare le modifiche. Voglio dire, metti insieme questi codici:

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

Questo è lavoro per me. Spero che funzioni anche per te.

Dal Cile chorizo, Saluds.

9

Prova questo ha funzionato per me testata su versione 3.x

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

inoltre è possibile utilizzare

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

se si vuole passare i parametri con la richiesta negozio carico

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

Problemi correlati