2010-07-22 42 views
9

¡Espero que esta sea una respuesta rápida!jqGrid getData solo devuelve datos para la página actual

Tengo una cuadrícula editable usando datos 'clientSide' (locales) y ahora deseo iterar todas las filas en javascript y procesar/empaquetar los datos yo mismo antes de enviarlos al servidor a través de una llamada jQuery.ajax.

El problema es que, inesperadamente (al menos para mí), utilizando el siguiente código solo recupera las filas de la página de cuadrícula visible actualmente! ¿Cómo puedo obtener TODAS las filas en la grilla (es decir, tengo cuatro páginas de 10 registros cada una y este código solo arroja las primeras 10 cuando estoy en la página 1)? Deben estar presentes en el cliente en alguna parte porque puedo buscar y editar las filas y los datos se conservan sin llamar al servidor. :)

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

Encontrado una solución de cambiando temporalmente el tamaño de la página. Espero que haya una solución más "formal". El código es: var pageSize = $ ('# myGrid'). GetGridParam ('rowNum'); $ ('# myGrid'). SetGridParam ({rowNum: 10000}). Trigger ("reloadGrid"); getRowData obtendrá hasta 10000 filas (por lo tanto, ajústelo más alto que su máximo de filas posibles). A continuación, puede usar pageSize para establecer el tamaño de página a las preferencias del usuario. – jqwha

Respuesta

8

Solución de Tony:

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

Pero esto no devolverá el orden correcto de ordenamiento de los datos al ordenar y luego llamar a esa función, ¿hay alguna otra función para ello? –

+0

Buena respuesta. El único problema es que si tiene datos formateados con funciones de formateador dentro de JQGrid mientras carga la tabla, esos nuevos valores se perderán. – will824

5

se había encontrado con un problema similar, a continuación es lo que terminé usando

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

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

+0

Su solución funcionó para mí. 'getRowData()' no devolvió la última fila de la cuadrícula por algún motivo. –

Cuestiones relacionadas