(en rojo los que convierten a la grilla en PAGINADA)
var selectedRows = {}; //ARREGLO para preservar la selección
var objectSelectedRows = []; //OBJETO para preservar ROWS seleccionados
// Grilla Consulta
function defineGridConsulta() {
try {
var agentsGrid = $('#grid2');
$("#grid2").jqGrid({
caption: "Factura Pagos",
datatype: "local",
colNames: ['Correlativo', 'RUT Cliente', 'Nombre Cliente', 'Operacion', 'Cuota', 'Fecha Pago', 'Total Iva', 'Total Pagado', 'Fecha Facturacion'],
colModel: [{ name: 'correlativo_pago', index: 'correlativo_pago', width: '150px', align: 'center' },
{ name: 'rut_cliente', index: 'rut_cliente', width: '150px', align: 'center', editable: false, hidden: false },
{ name: 'nombre', index: 'nombre', width: '450px', align: 'Left', editable: false, hidden: false },
{ name: 'operacion', index: 'operacion', width: '150px', align: 'center', editable: false, hidden: false },
{ name: 'num_cuota_format', index: 'num_cuota_format', width: '150px', align: 'center', editable: false, hidden: false },
{ name: 'fecha_pago', index: 'fecha_pago', width: '150px', align: 'center', editable: false, hidden: false },
{ name: 'total_iva', index: 'total_iva', width: '150px', editable: false, align: 'right', hidden: false, formatter: 'currency', formatoptions: { decimalPlaces: 0} },
{ name: 'total_pagado', index: 'total_pagado', width: '150px', align: 'right', editable: false, hidden: false, formatter: 'currency', formatoptions: { decimalPlaces: 0} },
{ name: 'facturaa', index: 'facturaa', width: '150px', align: 'center', editable: false, hidden: true}],
multiselect: true,
loadtext: 'Cargando datos...',
emptyrecords: 'No hay resultados encontrados o el ciclo de facturación no corresponde',
toppager: true,
gridview: true,
//rownumbers: true,
autoencode: true,
ignoreCase: true,
sortname: 'correlativo_pago',
sortorder: 'desc',
pager: $('#pager3'),
rowNum: 50,
rowList: [25, 50, 100, 150, 200, 250], //se puede comentar al paginar
//pgtext: null,
viewrecords: true,
width: 950,
shrinkToFit: true,
autowidth: false,
forceFit: true,
height: 950,
editurl: jutils.pageName(),
pgbuttons: true,
footerrow: true,
userDataOnFooter: true,
altRows: true,
//JC Para preservar estado de la selección
onSelectAll: function (rowIds, status) {
if (status === true) {
for (var l = 0; l < rowIds.length; l++) {
//preservo estado de la selección por pantalla del usuario
selectedRows[rowIds[l]] = true;
//preservo estado de la selección por pantalla del usuario
//Obtengo el(los)row seleccionados y los guardo en mi OBJETO, recorriendo el OBJETO para no repetir los registros al paginar
var rowEntradaFor = $("#grid2").jqGrid('getRowData', rowIds[l]);
var correlativoEntradaFor = rowEntradaFor["correlativo_pago"];
var existe = 0;
if (objectSelectedRows.length > 0) {
for (var k = 0; k < objectSelectedRows.length; k++) {
var rowInObject = objectSelectedRows[k];
if (rowInObject != null && rowInObject !== 'undefined')
var correlativoInObject = rowInObject["correlativo_pago"];
if (correlativoInObject === correlativoEntradaFor) {
existe = 1;
}
}
if (existe === 0) {
objectSelectedRows.push(rowEntradaFor);
}
} else {
objectSelectedRows.push(rowEntradaFor);
}
//FIN Obtengo el(los)row seleccionados y los guardo en mi OBJETO, recorriendo el OBJETO para no repetir los registros al paginar
}
} else {
for (var i = 0; i < rowIds.length; i++) {
//preservo estado de la selección por pantalla del usuario
delete selectedRows[rowIds[i]];
//preservo estado de la selección por pantalla del usuario
var rowDel = $("#grid2").jqGrid('getRowData', rowIds[i]);
var correlativoToEliminar = rowDel["correlativo_pago"];
//con este ciclo obtengo el indice a eliminar!
for (var j = 0; j < objectSelectedRows.length; j++) {
var rowInObjectDel = objectSelectedRows[j];
if (rowInObjectDel != null && rowInObjectDel !== 'undefined') {
var correlativoInObjectDel = rowInObjectDel["correlativo_pago"];
}
if (correlativoToEliminar === correlativoInObjectDel) {
delete objectSelectedRows[j];
}
}
}
}
},
onSelectRow: function (rowId, status, e) {
if (status === false) {
//preservo estado de la selección por pantalla del usuario
delete selectedRows[rowId];
//preservo estado de la selección por pantalla del usuario
var rowDel = $("#grid2").jqGrid('getRowData', rowId);
var correlativoToEliminar = rowDel["correlativo_pago"];
//con este ciclo obtengo el indice a eliminar!
for (var j = 0; j < objectSelectedRows.length; j++) {
var rowInObjectDel = objectSelectedRows[j];
if (rowInObjectDel != null && rowInObjectDel !== 'undefined')
var correlativoInObjectDel = rowInObjectDel["correlativo_pago"];
if (correlativoToEliminar === correlativoInObjectDel) {
delete objectSelectedRows[j];
}
}
} else {
//preservo estado de la selección por pantalla del usuario
selectedRows[rowId] = status;
//preservo estado de la selección por pantalla del usuario
//obtengo el row seleccionados y los guardo en un OBJETO
var row = $("#grid2").jqGrid('getRowData', rowId);
var correlativoEntrada = row["correlativo_pago"];
var existe = 0;
//recorro el OBJETO para no agregar dos veces el mismo row seleccionado en pantalla por usuario o al moverse en paginación
if (objectSelectedRows.length > 0) {
for (var i = 0; i < objectSelectedRows.length; i++) {
var rowInObject = objectSelectedRows[i];
if (rowInObject != null && rowInObject !== 'undefined')
var correlativoInArray = rowInObject["correlativo_pago"];
if (correlativoInArray === correlativoEntrada) {
existe = 1;
}
}
if (existe === 0) {
objectSelectedRows.push(row);
}
} else {
objectSelectedRows.push(row);
}
//recorro el OBJETO para no agregar dos veces el mismo row seleccionado en pantalla por usuario o al moverse en paginación
}
},
gridComplete: function () {
for (var rowId in selectedRows) {
agentsGrid.setSelection(rowId, true);
}
}
//FIN JC Para preservar estado de la selección
});
$("#grid2").jqGrid('filterToolbar', { stringResult: false, searchOnEnter: false, defaultSearch: 'cn' });
$("#grid2").jqGrid('navGrid', "#pager3", { edit: false, add: false, del: false, refresh: false });
$("#grid2").jqGrid('navButtonAdd', '#pager3', { buttonicon: 'ui-icon-transferthick-e-w', onClickButton: function () { Procesar(); }, caption: 'Facturar Pagos', position: 'last', title: 'Facturar Pagos', cursor: 'pointer' });
} catch (e) {
showMessage('Error al momento de buscar datos', 'Información');
return;
}
}
No hay comentarios:
Publicar un comentario