2010-01-25 23 views
11

Tengo una cuadrícula de árbol con filas de carga automática. El objetivo es ordenar la cuadrícula por columna de árbol, a la derecha en del lado del cliente.ordenación de jqGrid en el lado del cliente

Pero cada vez que hago clic en el encabezado de la columna ordenar, emite una llamada de Ajax para ordenar, pero todo lo que necesito es ordenar en el lugar usando los datos locales.

¿Tengo parámetros de cuadrícula incorrectos o no funciona en árbol con la ordenación del lado del cliente en la columna de árbol?

jqGrid params actual de la clasificación se encuentran son:

loadonce: true, // to enable sorting on client side 
sortable: true //to enable sorting 
+0

http://stackoverflow.com/questions/1329002/jqgrid-loadonce-doesnt-work-with-asp-net – queen3

Respuesta

7

Para llegar del lado del cliente de clasificación a trabajar, tenía que llamar reloadGrid después de la rejilla fue cargado:

loadComplete: function() { 
    jQuery("#myGridID").trigger("reloadGrid"); // Call to fix client-side sorting 
} 

no tenía hacer esto en otra grilla en mi aplicación porque fue configurado para usar datos recuperados a través de otra llamada AJAX, en lugar de datos recuperados directamente por la grilla:

editurl: "clientArray" 
datatype: "local" 
+0

Hola ¿podría elaborar un poco más en lo que se #groups? – DavidS

+0

Es solo el ID de la grilla. Acabo de cambiar la identificación para intentar aclarar eso. –

+1

Gracias por eso, aunque no entiendo completamente su solución. Hay otra respuesta de Groxx en http://stackoverflow.com/questions/1329002/jqgrid-loadonce-doesnt-work-with-asp-net que hace el truco. En caso de que alguien más esté interesado ... – DavidS

2

Estoy usando la ordenación del lado del cliente en jqGrid y recuperando un nuevo conjunto de datos json cuando cambia una lista de selección. Debe establecer rowTotal en una cantidad mayor o igual a la cantidad de filas devueltas, y luego establecer el tipo de datos en 'json' justo antes de volver a cargar la grilla.

// Select list value changed 
$('#alertType').change(function() { 
     var val = $('#alertType').val(); 
     var newurl = '/Data/GetGridData/' + val; 
     $("#list").jqGrid().setGridParam({ url: newurl, datatype: 'json' }).trigger("reloadGrid");   
}); 

// jqGrid setup 
$(function() { 
     $("#list").jqGrid({ 
      url: '/Data/GetGridData/-1', 
      datatype: 'json', 
      rowTotal: 2000, 
      autowidth: true, 
      height:'500px', 
      mtype: 'GET', 
      loadonce: true, 
      sortable:true, 
      ... 
      viewrecords: true, 
      caption: 'Overview', 
      jsonReader : { 
       root: "rows", 
       total: "total", 
       repeatitems: false, 
       id: "0" 
      }, 
      loadtext: "Loading data...", 
     }); 
    }); 
1
$(function() { 
     $("#list").jqGrid({ 
      url: '/Data/GetGridData/-1', 
      datatype: 'json', 
      rowTotal: 2000, 
      autowidth: true, 
      height:'500px', 
      mtype: 'GET', 
      loadonce: true, 
      sortable:true, 
      ... 
      viewrecords: true, 
      caption: 'Overview', 
      jsonReader : { 
       root: "rows", 
       total: "total", 
       repeatitems: false, 
       id: "0" 
      }, 
      loadtext: "Loading data...", 
     }); 
    }); 
+2

Por favor, explique el código también para que sea más educativo. – lpapp

Cuestiones relacionadas