2010-07-22 7 views
9

Hoffentlich ist dies ein schneller!jqGrid getData liefert nur Daten für die aktuelle Seite

Ich habe ein editierbares Gitter mit 'clientSide' (lokalen) Daten und ich möchte jetzt alle Zeilen in Javascript durchlaufen und die Daten selbst verarbeiten/verpacken, bevor Sie sie über einen jQuery.ajax Aufruf an den Server senden.

Das Problem ist, dass, unerwartet (zumindest für mich), die Verwendung des folgenden Codes nur die Zeilen für die gerade sichtbare Gitterseite abruft! Wie bekomme ich ALLE Zeilen im Gitter (d. H. Ich habe vier Seiten mit jeweils 10 Datensätzen und dieser Code gibt nur die ersten 10 zurück, wenn ich auf Seite 1 bin)? Sie müssen irgendwo im Client vorhanden sein, da ich die Zeilen umblättern und bearbeiten kann und die Daten persistent sind, ohne den Server aufzurufen! :)

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

eine Abhilfe Gefunden vorübergehend die Seitengröße ändern. Hoffe, es gibt eine "formellere" Lösung. Code ist: var pageSize = $ ('# myGrid'). GetGridParam ('rowNum'); $ ('# myGrid'). SetGridParam ({rowNum: 10000}). Trigger ("reloadGrid"); getRowData wird dann bis zu 10000 Zeilen erhalten (also höher als die maximal möglichen Zeilen). Sie können dann pageSize verwenden, um die Seitengröße auf die Benutzereinstellungen zurückzusetzen. – jqwha

Antwort

8

Lösung von Tony:

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

Aber das wird nicht die richtige Sortierreihenfolge der Daten beim Sortieren und dann Aufruf dieser Funktion zurückgeben, gibt es eine andere Funktion für sie? –

+0

Schöne Antwort. Wenn Sie beim Laden der Tabelle Daten innerhalb von JQGrid mit Formatierfunktionen formatiert haben, gehen diese neuen Werte verloren. – will824

5

hatte ein ähnliches Problem aufgetreten, unten ist, was ich am Ende mit

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.. 
} 

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

+0

Ihre Lösung hat für mich funktioniert. 'getRowData()' gab aus irgendeinem Grund nicht die letzte Zeile des Rasters zurück. –