2010-11-20 47 views
14

Encontré que en el plugin jqGrid para JQuery puedo agregar filas dinámicamente, pero ¿puedo hacer lo mismo con las columnas? Si hubiera una tabla simple, preferiría hacer esto manualmente con las manos, pero jqGrid almacena información de la tabla en muchos divs.jqGrid agregar nueva columna

+0

Y dónde está su rejilla tomará los datos para este nuevo ¿columna? – griZZZly8

+0

@ grizzzly8 debe estar vacío (los campos de datos son editables). – Ockonal

Respuesta

31

No se puede agregar una columna a jqGrid dinámicamente. Debe recrear toda la cuadrícula con colModel con una columna más. Si usa colNames por separado, entonces el tamaño de la matriz también debe aumentarse. Puede usar GridDestroy por ejemplo para destruir la grilla existente. El uso de jQuery.Remove o jQuery.Empty en su lugar también es posible.

ACTUALIZADO: Me parece que GridUnload es mejor para su porpose. Creé small demo que demuestran cómo se puede recrear una grilla. Para poder usar GridUnload o GridDestroy, debe verificar que incluya grid.custom.js en su proyecto (si utiliza la versión de desarrollador de jqGrid) o que ha marcado "Custom" "Additinal methods" en la página jqGrid download.

ACTUALIZADO 2: Uno puede usar addColumn método que puede ser descargado desde here (ver jQuery.jqGrid.addColumn.js). El método todavía está en fase beta. Se pueden encontrar algunas demos que muestran cómo usar el método here (ver addColumnX.htm ejemplos).

+0

Gracias, pero no puedo encontrar cómo usar GridDestroy. ¿Me puedes ayudar con un pequeño ejemplo? 'jQuery (" # list "). jqGrid ('GridDestroy');' dice que la función no está definida (GridDestroy) – Ockonal

+1

@Ockonal: actualicé mi respuesta e incluí una pequeña demostración. – Oleg

+0

@Oleg, muchas gracias. Una vez más, ahorraste mi tiempo en jqgrid. +1. – vissu

4

sólo tiene que utilizar

$("#gridid").jqGrid('GridUnload'); 

se descargará totalmente rejilla y estará listo para cargar de nuevo con nuevas columnas y datos.

+1

En la versión más nueva, esto ya no funciona. Use esto para descargar jqGrid: $ .jgrid.gridUnload ('# list'); – tudor

-1

simplemente Puede establecer el nuevo modelo de columna y vuelva a cargar la cuadrícula:

var newColModel = $("#myGrid").jqGrid("getGridParam", "colModel").concat({ /* new column attributes */ }); 
$("#myGrid").jqGrid("setGridParam", {colModel: newColModel}).trigger("reloadGrid"); 
0

rownumbers: true, y rownumWidth: 25 (por defecto)

Cuestiones relacionadas