Estoy refrescante jqgrid con este script:

$('#btnRefresh').click(function () {
   $.ajax({
      type : "GET",
      url: "${pageContext.request.contextPath}/General/ProvinceLoadGrid.json",
      success: function (data) {
           if (data != null) {
               jQuery('#dataTable').jqGrid('clearGridData')
                     .jqGrid('setGridParam', {data: data, page: 1})
                     .trigger('reloadGrid');
           }
      }
   });
)};

He configurado el jqgrid para guardar las filas seleccionadas después de moverse a través de las páginas.
este activadores de guión de recarga de cuadrícula para volver a cargar los datos, pero esto produce un problema.
el problema es que cuando seleccione la primera fila en la página 1, (cuando cada página tiene 10 registros)
el primer registro en la segunda página (11 record) es seleccionado. también el registro en la 3ª página está seleccionado (21 de registro), etc …
todo esto sucede después de reloadGrid. el jqgrid es el ahorro de mi selección en cada página correctamente, pero después de volver a cargar la cuadrícula se produce este problema.

¿Cómo puedo resolver esto?

  • Gracias De Litio. Puedo cambiar mi tipo de datos locales para el lado del cliente de actualización.
InformationsquelleAutor Lithium | 2014-04-30

3 Comentarios

  1. 4

    Intente esto:

    if (data != null) {
     jQuery('#dataTable').jqGrid('clearGridData')
     jQuery('#dataTable').jqGrid('setGridParam', {data: data, page: 1})
     jQuery('#dataTable').trigger('reloadGrid');
    }
    • Yo estaba usando estos código, antes de que el que estoy usando ahora. no hay ninguna diferencia entre ellos
    • error en la consola??
    • no hay ningún error en la consola:
    • Yo también claro que la matriz que guardar las filas seleccionadas a través de las páginas. pero no hace ninguna diferencia. esto es debido a que cuando la carga de la página, loadComplete de jqgrid se produce y seleccionar nada. cuando me muevo a través de las páginas de la loadComplete actualizaciones de la matriz se utiliza para guardar la selección y selecciona las filas. después de actualizar, loadComplete considera todas las páginas como la página 1. y es por eso que cuando yo seleccione la primera fila en la página 1, todas las primeras filas en otras páginas seleccionado demasiado
    • ese es el problema distinto. usted necesidad de modificar el selector de fila para restringir a la primera página.
    • este código actualizaciones de la matriz para seleccionar filas:/ var updateIdsOfSelectedRows = function (id, isSelected) { var indice = $.inArray(id, idsOfSelectedRows); if (!isSelected && índice >= 0) { idsOfSelectedRows.splice(índice 1); } else if (index < 0) { idsOfSelectedRows.push(id); } }; y en loadComplete he utilizado: var $this = $(this), i , conde; for (i = 0, contador = idsOfSelectedRows.longitud; i< count; i++) { $(this).jqGrid(‘setSelection’, idsOfSelectedRows[i], false); } }

  2. 1

    Me fijo !
    el problema es que después de volver a cargar la cuadrícula el tipo de datos se restablece a su valor por defecto y tenemos la necesidad de volver a establecer json o xml de nuevo!

    $('#btnRefresh').click(function () {
       $.ajax({
          type : "GET",
          url: "${pageContext.request.contextPath}/General/ProvinceLoadGrid.json",
          success: function (data) {
               if (data != null) {
                   jQuery('#dataTable').jqGrid('clearGridData')
                         .jqGrid('setGridParam', {data: data, datatype: 'json'})
                         .trigger('reloadGrid');
               }
          }
       });
    )};
  3. 0

    Para evitar todos los problemas,hago este

    Html encerrar jQgrid tabla en un div

    <div id="tableDivID">
      <table id="tableID"></table>
      <div id="tablePagerID"></div>
    </div>

    Jquery – Función de activación de jQgrid

    function activatejQGrid(data)
    {
    
    $("tableID").jQGrid({
    //code for jQgrid initilise with *data*
    }}
    
    }

    re-inicializar jQgrid

    $("#tableDivID").replaceWith(function () {
      return "<div id='tableDivID'><table id='tableID'></table><div id='tablePagerID'></div>
    </div>";
      });
    activatejQGrid(data);

Dejar respuesta

Please enter your comment!
Please enter your name here