Cómo reemplazar remapColums con remapColumnsByName en jqgrid gratis
Código de respuesta encómo persistir la fila actual en jqgrid
se usa para guardar el estado de jqgrid. Guarda el estado de la columna jqgrid usando números de columna. Si jqgrid colmodel se cambia en el servidor, esto causa un error de JavaScript en el navegador.
Congelar columna de rownum en JQGrid comentar yhttps://github.com/free-jqgrid/jqGrid/blob/master/README49.md describe el métodoremapColumnsByName
. Esperaba que el uso de esto solucionara el problema.
jqgrid gratuito se descargó del git master de hoy. En estado guardar después de cambiar el tamaño de las columnas o mover la línea
saveColumnState.call($grid, $grid[0].p.remapColumns);
fue cambiado a
saveColumnState.call($grid, $grid[0].p.remapColumnsByName);
y en estado restaurar en carga Código completo
if (isColState && myColumnsState.permutation.length > 0 &&
myColumnsState.permutation.length === cm.length) {
$grid.jqGrid("remapColumns", myColumnsState.permutation, true);
}
con
if (isColState && myColumnsState.permutation.length > 0 &&
myColumnsState.permutation.length === cm.length) {
$grid.jqGrid("remapColumnsByName", myColumnsState.permutation, true);
}
Ahora línea
if (isColState && myColumnsState.permutation.length > 0 &&
causa error
Uncaught TypeError: Cannot read property 'length' of undefined
¿Cómo arreglar esto para que el estado de la columna se pueda usar si se cambia la definición de la columna?
Los métodos se definen como
var saveColumnState = function (perm) {
var colModel = this.jqGrid('getGridParam', 'colModel'),
i, l = colModel.length, colItem, cmName,
postData = this.jqGrid('getGridParam', 'postData'),
columnsState = {
search: this.jqGrid('getGridParam', 'search'),
page: this.jqGrid('getGridParam', 'page'),
rowNum: this.jqGrid('getGridParam', 'rowNum'),
sortname: this.jqGrid('getGridParam', 'sortname'),
sortorder: this.jqGrid('getGridParam', 'sortorder'),
autoedit: autoedit,
rownumbers: $grid.jqGrid('getGridParam', 'rownumbers') && !$grid[0].p.colModel[0].hidden,
searchWindow: searchParams,
editWindow: editParams,
permutation: perm,
selectedRows: idsOfSelectedRows,
colStates: {}
},
colStates = columnsState.colStates;
if (typeof (postData.filters) !== 'undefined') {
columnsState.filters = postData.filters;
}
for (i = 0; i < l; i++) {
colItem = colModel[i];
cmName = colItem.name;
if (cmName !== 'rn' && cmName !== 'cb' && cmName !== 'subgrid') {
colStates[cmName] = {
width: colItem.width,
hidden: colItem.hidden
};
}
}
saveObjectInLocalStorage(myColumnStateName, columnsState);
};
var saveObjectInLocalStorage = function (storageItemName, object) {
if (typeof window.localStorage !== 'undefined') {
window.localStorage.setItem(storageItemName, JSON.stringify(object));
}
};