jqgrid reloadGrid con loadonce impostato su true

Sto usando due jqgrids in una pagina. seconda griglia ho usato loadonce: true poiché ho bisogno di ordinare le colonne nella seconda griglia. ho bisogno di ricaricare entrambe le griglie dopo un post del server. (è necessario mostrare il valore aggiornato nella seconda griglia). prima griglia ricaricare bene poiché non utilizzerà l’attributo loadonce . la mia domanda è ansible utilizzare loadonce attributo reloadGrid e reloadGrid insieme? (impostando loadonce attributo loadonce dynamicmente alla griglia) oppure loadonce fare un ordinamento lato server in questo caso? per favore consiglio Grazie in anticipo.

Se si utilizza loadonce:true jqGrid modifica i parametri del datatype dati in “locale” dopo il primo caricamento di dati dalla griglia. Tutti i successivi ricaricamenti della griglia (ordinamento, impaginazione, filtraggio) funzionano localmente. Se si desidera aggiornare nuovamente i dati della griglia dal server, è necessario impostare il datatype di datatype sul valore originale (“json” o “xml”). Per esempio:

 $("#list").setGridParam({datatype:'json', page:1}).trigger('reloadGrid'); 

AGGIORNATO: Free jqGrid supporta fromServer: true opzione di reloadGrid inizia con la prima versione (a partire dalla versione 4.8). Quindi si può usare il codice come

 $("#list").trigger("reloadGrid", { fromServer: true, page: 1 }); 

fare lo stesso di sopra. Il vantaggio principale: tale codice funziona bene con qualsiasi valore iniziale di datatype di datatype ( "json" , "jsonp" , "xml" e così via). JqGrid salva il valore originale del datatype di datatype all’interno di dataTypeOrg interno prima di cambiarlo in "local" .

Un’altra opzione utile di free jqGrid è il parametro reloadGridOptions di navGrid , che consente di specificare le opzioni predefinite di reloadGrid . Quindi si può usare per esempio

 loadonce: true, navOptions: { reloadGridOptions: { fromServer: true } } 

opzioni di jqGrid, che imposta anche i valori di default per navGrid . Come risultato il clic sul pulsante “Ricarica” ​​della barra di navigazione ricaricherà la griglia dal server invece del ricaricamento locale.

Nizza stava provando per l’ultima settimana, la soluzione è l’uso perfetto

 jQuery("#datalist").jqGrid().setGridParam( { datatype:'xml', page:1, url : '< %=request.getContextPath()%>/PreviewReport?cmd=1&fromdate='+vfromDate+'&todate='+vtoDate+'&status='+vstatus+'&keyword='+vkeyword+'&mdn='+vmdn+'&filetype='+vfiletype } ).trigger("reloadGrid"); 

per ricaricare i dati usando loadonce:false

Solo per dire, per me, la seguente riga non era abbastanza, per aggiornare i dati nel mio loadonce:true jqGrid:

 $("#MikesGrid").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid'); 

Dopo aver chiamato quella linea, ho provato a chiamare il mio codice che caricava i miei dati JSON e popolava il jqGrid con esso, ma non aggiorna le righe nella mia griglia.

La mia soluzione era scaricare forzatamente jqGrid e quindi chiamare la mia funzione per ricrearla.

 $("#MikesGrid").jqGrid('GridUnload'); 

Forse ero solo sfortunato.

A proposito, quando avrò la possibilità, documenterò come ho scritto una funzione JavaScript generica per aggiungere due pulsanti a qualsiasi jqGrid, uno per aggiornare i dati (loadonce) e un secondo pulsante per esportare i dati jqGrid in un vero file Excel , usando la mia biblioteca:

Esporta jqGrid in un file Excel

Mi piace il codice riutilizzabile!

 $("#shoppingCatalog").jqGrid('GridUnload'); 

Rimuoverà la struttura e quindi il codice può ribuild la griglia con i dati dal successivo richiamo del server.