2010-07-22 14 views
9

Speriamo che sia veloce!jqGrid getData restituisce solo i dati per la pagina corrente

Ho una griglia modificabile utilizzando i dati "clientSide" (locali) e ora desidero iterare tutte le righe in javascript e elaborare/impacchettare i dati personalmente prima di inviarlo al server tramite una chiamata jQuery.ajax.

Il problema è che, inaspettatamente (almeno per me), utilizzando il seguente codice recupera solo le righe per la pagina della griglia correntemente visibile! Come posso ottenere TUTTE le righe nella griglia (ad esempio, ho quattro pagine di 10 record ciascuna e questo codice restituisce solo i primi 10 quando sono a pagina 1)? Devono essere presenti nel client da qualche parte perché posso scorrere le pagine e modificare le righe e i dati vengono mantenuti senza chiamare il server! :)

cacheCONF = []; 
    var rows= $('#myGrid').getRowData(); //<--Need to get ALL rows here!!! 
    var cacheRowID = 0; 
    for (var row in rows) { 
     if (rows[row].Action == 'Yes') { 
      cacheCONF.push({ RowID: rowID, System: rows[row].System, Action: rows[row].Action, Account: '-', Required: '-' }); 
      rowID++; 
     } 
    } 
+2

Trovato una soluzione per cambiare temporaneamente la dimensione della pagina. Spero che ci sia una soluzione più "formale". Il codice è: var pageSize = $ ('# myGrid'). GetGridParam ('rowNum'); $ ('# myGrid'). SetGridParam ({rowNum: 10000}). Trigger ("reloadGrid"); getRowData otterrà quindi fino a 10000 righe (quindi impostarlo più in alto delle tue massime righe possibili). È quindi possibile utilizzare pageSize per impostare le dimensioni della pagina in base alle preferenze dell'utente. – jqwha

risposta

8

Soluzione da Tony:

var mydata = $("#grid").jqGrid('getGridParam','data'); 
+2

Ma questo non restituirà il giusto ordine di ordinamento dei dati quando si ordina quindi chiamando quella funzione, c'è qualche altra funzione per questo? –

+0

Bella risposta. Unico problema è se i dati formattati con le funzioni di formattazione all'interno di JQGrid durante il caricamento della tabella, quei nuovi valori andranno persi. – will824

5

aveva incontrato un problema simile, qui di seguito è quello che ho finito per usare

var data = $("#table-id").jqGrid('getGridParam', 'data'); 
for (var i = 0; i < data.length; i++) { 
    var f_name = data[i].FirstName; 
    var l_name = data[i].LastName; 
    // blah... blah.. 
} 

Riferimento: http://www.trirand.com/blog/?page_id=393/help/jqgrid-getdata-only-returns-data-for-current-page/

+0

La tua soluzione ha funzionato per me. 'getRowData()' non restituiva l'ultima riga della griglia per qualche motivo. –

Problemi correlati