2010-09-22 9 views
11

Usiamo il pulsante di ricarica del navigatore jqGrid su una griglia con loadonce impostato su true.Come ricaricare jqGrid per andare al server?

Il pulsante di ricarica attualmente NON torna al server per ottenere i dati - come possiamo ottenere il ricaricamento per andare al server per ottenere i dati più recenti?

Credo che possiamo usare il beforeRefresh callback per impostare la griglia data a json invece di local ma non sono chiaro come configurare anche il metodo beforeRefresh - Non capisco davvero la documentazione.

risposta

22

Non sei l'unica persona che ha il problema. Ho risposto a the same question prima. Per ricaricare il contenuto della griglia dal server, è necessario reimpostare il parametro datatype sul valore originale "json" o "xml" e quindi aggiornare la griglia. Per esempio

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

AGGIORNATO: Per chiamare la linea interna della beforeRefresh gestore di eventi si può fare seguendo

jQuery("#list").jqGrid('navGrid','#pager', 
    { edit:false,view:false,add:false,del:false,search:false, 
    beforeRefresh: function(){ 
     alert('In beforeRefresh'); 
     grid.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid'); 
    } 
    }); 

Ho modificato un esempio da am vecchia questione. Here se si fa clic sul pulsante di aggiornamento è possibile vedere in diretta come funziona il codice.

AGGIORNATO 2: Free jqGrid supporta alcune nuove opzioni. L'evento reloadGrid supporta il parametro fromServer: true che può essere utilizzato per forzare il ricaricamento dei dati dal server e navGrid supporta l'opzione reloadGridOptions che può essere utilizzata per specificare le opzioni di reloadGrid utilizzate al clic sul pulsante Aggiorna. Così il codice di cui sopra potrebbe essere

$("#list").jqGrid("navGrid", { 
    edit: false, 
    add: false, 
    del: false, 
    search: false, 
    reloadGridOptions: { fromServer: true } 
}); 

Tra l'altro si può usare navOptions possibilità di jqGrid per specificare le opzioni di default di navGrid (vedere l'articolo wiki). Permette di scrivere il codice qualcosa come

$("#link").jqGrid({ 
    // all typical jqGrid parameters 
    datatype: "json", // or "xml" 
    loadonce: true, 
    pager: true, // no empty div for page is required 
    navOptions: { 
     edit: false, 
     add: false, 
     del: false, 
     search: false, 
     reloadGridOptions: { fromServer: true } 
    } 
}).jqGrid("navGrid"); 
+0

Grazie - Come è possibile eseguire questo codice quando si fa clic sul pulsante di ricarica? Non sono chiaro come configurare la barra di navigazione per eseguire il metodo 'beforeRefresh' se questo è ciò a cui si sta alludendo. –

+0

@Marcus: Se è molto semplice. Ho incluso il codice corrispondente nella mia risposta. – Oleg

+0

@Oleg, ho provato a farlo, ma una volta fatto clic sul pulsante di aggiornamento, l'impaginazione non funziona. –

2

Ho provato la seguente configurazione e funziona.

<script type="text/javascript"> 
jQuery(function() { 
    jq("#YOUR-GRID-ID").jqGrid({ 
     ... 
     loadonce: true, 
     ... 
    }); 
    jQuery("#refresh_YOUR-GRID-ID").click(function(){ 
     jQuery("#YOUR-GRID-ID").setGridParam({datatype: 'json'}); 
     jQuery("#YOUR-GRID-ID").trigger("reloadGrid"); 
    }); 
}); 
</script> 
Problemi correlati