2009-08-06 37 views
47

jqGrid expone una propiedad rowNum donde puede establecer el número de filas para mostrar para cada página. ¿Cómo se configura la grilla para solo mostrar TODAS las filas?¿Cómo mostrar todas las filas en jqGrid?

Ahora mismo estoy estableciendo el rowNum en algo realmente alto como <%= int.MaxValue %> pero me pregunto si hay una manera mejor.

+0

También utilizamos un número alto.Puede hacer que este valor sea una bandera y hacer que su servidor ignore la paginación cuando se ve. –

+0

http://stackoverflow.com/questions/2224070/setting-jqgrid-rownum-dynamically – vemv

Respuesta

53

En la última versión del jqGrid, se puede establecer ROWNUM a -1 para instruir a la red para mostrar siempre todas las filas:

rowNum: -1 

Consulte la documentación más reciente jqGrid here.

Específicamente:

Establece el número de registros que desea ver en la red. Este parámetro se pasa a la url para que lo use la rutina del servidor que recupera los datos. Tenga en cuenta que si establece este parámetro en 10 (es decir, recupera 10 registros) y su servidor devuelve 15, entonces solo se cargarán 10 registros. Establezca este parámetro en -1 (ilimitado) para desactivar esta comprobación.


actualización

Desafortunadamente este comportamiento se rompió en jqGrid 3.6.3. De acuerdo con this post from Tony:

Sí, esto es cierto. La razón es el nuevo rollo introducido: 1. En el futuro corregiremos este comportamiento.

Por lo tanto, los desarrolladores de jqGrid son conscientes de este problema y aparentemente están planeando solucionarlo en una versión futura. Lamentablemente, esta publicación fue de hace más de un año ...

En este momento, todo lo que puedo recomendar es que establezca rowNum en un número muy grande para simular el comportamiento de -1.


También puede intentar la solución de whatispunk debajo de utilizar rowNum: ''. Sin embargo, probé esto en una grilla que contiene datos locales (loadonce: true). Al intentar ordenar las filas, desaparecerían todos los datos locales de la cuadrícula. Así que esta solución no parece funcionar para las cuadrículas con datos locales, a menos que este defecto se haya solucionado en una versión posterior de jqGrid (lo probé en jqGrid 3.8.2). Si tiene comentarios, ¡publique un comentario a continuación!


Actualización - 16 de abril 2014

According to the jqGrid team esto ahora es fijo:

he añadido soporte para establecer diferentes valores de indicación de localizador cuadro de selección que incluye -1 para todos.

No he tenido la oportunidad de probar para confirmar la solución. Presumiblemente, este cambio estará en la próxima versión después de jqGrid 4.6.0.

+3

Si configura rowNum: '' usted obtener todas las filas – mikesigs

+0

@Justin, los cruces en esta respuesta son confusos y su comentario de "solución válida" está oculto. ¡Recomiendo que no se tache el cruce! :) – KevinDeus

+1

La parte tachada de mi respuesta ya no es válida, razón por la cual fue tachada. Creo que sería aún más confuso restaurarlo. Podría simplemente eliminarlo, pero entonces la respuesta válida estaría fuera de contexto porque tendría que explicar cómo originalmente -1 se utilizó para lograr esta solución. No sé ... probablemente sea lo correcto para hacerlo reescribir completamente esta respuesta en ese sentido. –

0

También puede acceder a jquery.jqGrid.js y cambiar "rowNum: 20" a "rowNum: Some-Really-Large-Number". Cuando define su jqGrid, no especifique rowNum. A continuación, devuelva todo su conjunto de datos a jqGrid.

4

si no desea utilizar la paginación, cambie el código del lado del servidor para simplemente devolver todas las filas. no use el parámetro de filas en absoluto.

si usted quiere tener la rowlist sino que también tienen una opción para mostrar todo luego hacer algo como esto en las propiedades de la cuadrícula

jQuery("#statement_mods").jqGrid({ 
    rowList:['ALL',30,50,100,200] 
}); 

y luego en el código serverside asegurarse de que se ignora el parámetro de filas si GET ['rows'] = 'ALL'

+0

Tipo de trabajos pero, me aparece "Ver NaN - NaN de 577" en la esquina inferior derecha – gawpertron

8

jqgrid (3.5 de todos modos) no parece tener una forma elegante incorporada para hacer esto. El mejor que he encontrado hasta ahora es añadir algo como lo siguiente a sus opciones de cuadrícula:

rowList:[10,20,30,100000000], 
loadComplete: function() { 
    $("option[value=100000000]").text('All'); 
}, 

Cuando el 100000000 es un número arbitrariamente alto que el máximo # de filas que tendrá que devolver, y la opción [Valor =] línea es para que su interfaz de usuario se vea un poco mejor. Jenky, pero funciona para mí.

0

Configuración rowNum: '' obtendrá todas las filas.

1
Jqgrid.PagerSettings.PageSize = Max Row you want to display; 
Jqgrid.ToolBarSettings.ToolBarPosition = ToolBarPosition.Hidden; 
2

Si ha establecido la paginación en la barra de navegación, también se puede acceder al número total de filas escritas en la parte inferior derecha de la cuadrícula y luego anexar a la opción RowList generado.

hacer algo como:

// Get the total number of rows and delete space between numbers (Split the content of the div depending of the language (for me french) 

var val=jQuery("#pager_right div").text().split('sur')[jQuery("#pager_right div").text().split('sur').length-1].split(' ').join(''); 

    // And do the appending if the option isn't already added 

if(!$(".ui-pg-selbox option[value='"+val+"']").length > 0) 
    jQuery(".ui-pg-selbox").append($('<option></option>').val(val).html(val)); 
1

Tengo este trabajo:

$('#bla').jqGrid({ 
     ... 
     'rowNum'  : 0, 
     'loadOnce' : true, 
     'loadComplete': function(data) { 
      $(this).jqGrid('setGridParam', 'rowNum', data.total); 
     }, 
     ... 
}); 

Esto funciona con y sin la opción loadOnce establecido en true. Tenga en cuenta que primero debe establecer la opción rowNum en 0; si omite esta opción, seguirá siendo la predeterminada en los 20 registros que se mostrarán. Además, supongo que devuelve las filas totales del servidor en el formato de lector JSON documentado.

0

Incluso si todavía aparece en el documento que no se puede establecer rowNum a -1 a partir de jqGrid 4.5.4 funciona de nuevo (tal vez en la versión anterior también).

3

Esto funciona:

// Step1 - defines the rows 
jqGridOptions.rowList =[10, 50, 100, 500, 'All']; 
... 
... 
// Step2 - Change the 'All' to a meaningful value 
loadComplete: function (data) { 
    $(".ui-pg-selbox option[value='All']").val(1000); 
} 
1

resuelto con el cambio simple: ROWNUM: inputDataArray.length

donde inputDataArray es la matriz que estoy proporcionando a la red.

2

establecer rowNum:-1 hizo el truco para mí

0

Por defecto, el programa de rejilla JQ 20 filas Max, si está utilizando no usar la paginación:

// To over come with this problem ,you can just write the bold mark 
    (rowNum:10000,): 
    $("#MasterDataDefinationGrid").jqGrid({ 
      url: 'FetchData.aspx/GetDataFromDB', 
      datatype: 'json', 
      mtype: 'POST', 
      height: 300, 
      autowidth: true, 
      serializeGridData: function (postData) { 
       return JSON.stringify(postData); 
      }, 
      ajaxGridOptions: { contentType: "application/json" }, 
      loadonce: true, 
      colNames: [Your column names], 
      colModel: [Your model], 
      formatter: 'actions', 
      pager: '#MasterDataDefinationPager', pgbuttons: false,pgtext:false, 
      multiselect: false, 
      ignoreCase: true, 
      **rowNum: 10000,** 
      loadtext: 'Loading ...', 
      gridview: true, 
      hidegrid: false, 
      jsonReader: { 
       page: function (obj) { return 1; }, 
       total: function (obj) { return 1; }, 
       records: function (obj) { return obj.d.length; }, 
       root: function (obj) { return obj.d; }, 
       repeatitems: false, 
       id: "0" 
      }, 
      caption: 'Data' 
     }); 
Cuestiones relacionadas