2010-09-22 15 views
11

Usamos el botón de recarga del navegador jqGrid en una grilla con loadonce establecido en verdadero.¿Cómo obtener la recarga jqGrid para ir al servidor?

El botón de recarga NO vuelve al servidor para obtener los datos. ¿Cómo podemos hacer que la recarga vaya al servidor para obtener los datos más recientes?

creo que podemos usar la devolución de llamada beforeRefresh para configurar la red data a json en lugar de local pero no me queda claro cómo incluso configurar el método beforeRefresh - Realmente no entiendo la documentación.

Respuesta

22

Usted no es la única persona que tiene el problema. Respondí a the same question antes. Para volver a cargar el contenido de la cuadrícula desde el servidor, debe restablecer el parámetro datatype al valor original "json" o "xml" y luego actualizar la cuadrícula. Por ejemplo

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

ACTUALIZADO: Para llamar a la línea interior de beforeRefresh controlador de eventos que pueden hacer los siguientes

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'); 
    } 
    }); 

he modificado un ejemplo de la mañana vieja cuestión. Here si hace clic en el botón de actualización puede ver en vivo cómo funciona el código.

ACTUALIZADO 2: Free jqGrid es compatible con algunas opciones nuevas. reloadGrid evento admite el parámetro fromServer: true que se puede usar para forzar la recarga de datos del servidor y navGrid admite la opción reloadGridOptions que se puede utilizar para especificar las opciones de reloadGrid utilizadas al hacer clic en el botón Actualizar. Así que el código anterior podría ser

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

Por cierto que uno puede utilizar la opción de navOptions jqGrid para especificar las opciones predeterminadas de navGrid (ver el artículo de la wiki). Permite escribir el código algo así como

$("#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

Gracias - ¿Cómo se puede ejecutar este código cuando se hace clic en el botón de recarga? No tengo claro cómo configurar la barra de navegación para ejecutar el método 'beforeRefresh' si esto es lo que estás aludiendo. –

+0

@Marcus: si es muy fácil. I incluye el código correspondiente en mi respuesta. – Oleg

+0

@Oleg, intenté hacer esto, pero una vez que hago clic en el botón Actualizar, la paginación no funciona. –

2

He intentado la siguiente configuración y funciona.

<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> 
Cuestiones relacionadas