martes, 31 de mayo de 2016

C# - Conservar rows seleccionados en grilla JQUERY paginada., y al Procesar, Guardar

(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;
            }
        }

jueves, 26 de mayo de 2016

C# - Conservar rows seleccionados en grilla JQUERY paginada.-

 // Grilla Consulta
        function defineGridConsulta() {
            try {
                var selectedRows = {};
                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],
                    //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 i = 0; i < rowIds.length; i++) {
                                selectedRows[rowIds[i]] = true;
                            }
                        } else {
                            for (var i = 0; i < rowIds.length; i++) {
                                delete selectedRows[rowIds[i]];
                            }
                        }
                    },
                    onSelectRow: function (rowId, status, e) {
                        if (status === false) {
                            delete selectedRows[rowId];
                        } else {
                            selectedRows[rowId] = status;
                        }

                    },

                    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;
            }
        }

jueves, 5 de mayo de 2016

C# - Convertir Grilla en DataTable

 protected DataTable ConvertToDataTable(ASPxGridView _gvDeudas)
        {
            DataTable dt = new DataTable();


            for (int i = 0; i < _gvDeudas.VisibleRowCount; i++)
            {
                DataRow dr;
                dr = dt.NewRow();

                dr["CodigoConcepto"] = _gvDeudas.GetRowValues(i, "CodigoConcepto");
                dr["Rol"] = _gvDeudas.GetRowValues(i, "Rol");
                dr["CodigoComuna"] = _gvDeudas.GetRowValues(i, "CodigoComuna");
                dr["Periodo"] = _gvDeudas.GetRowValues(i, "CodigoComuna");
                dr["Operacion"] = _gvDeudas.GetRowValues(i, "Operacion");
                dr["FechaGasto"] = _gvDeudas.GetRowValues(i, "FechaGasto");
                dr["MontoPesos"] = _gvDeudas.GetRowValues(i, "MontoPesos");
                dr["TipoDocumento"] = _gvDeudas.GetRowValues(i, "TipoDocumento");
                dr["NumeroDocumento"] = _gvDeudas.GetRowValues(i, "NumeroDocumento");
                dr["RutProveedor"] = _gvDeudas.GetRowValues(i, "RutProveedor");
                dr["NombreProveedor"] = _gvDeudas.GetRowValues(i, "NombreProveedor");
                dr["EsElectronico"] = _gvDeudas.GetRowValues(i, "EsElectronico");
                dr["TipoPago"] = _gvDeudas.GetRowValues(i, "TipoPago");

                dt.Rows.Add(dr);
            }

            return dt;


        }

C# - validar tipo de datos de un DataTable

*Por  ejemplo para carga de datos desde un EXCEL.

 private bool ValidaTipoDatoEntrada(DataTable dt,  ref string msjValidaEntrada)
        {
            //97 : CargaDeudaHonorarios 26 : CargaDeudaSeguroCliente

            var columnaError = string.Empty;
            try
            {
                foreach (DataRow row in dt.Rows)
                {
                    if (!string.IsNullOrEmpty(row[0].ToString()))
                    {
                        columnaError = @"Patente Rol - valor: " + row[0];
                        var patenteRol = row[0].ToString();
                    }

                    if (!string.IsNullOrEmpty(row[1].ToString()))
                    {
                        columnaError = @"Operación - valor: " + row[1];
                        var operacion = Convert.ToDecimal(row[1]);
                    }

                    if (!string.IsNullOrEmpty(row[2].ToString()))
                    {
                        columnaError = @"Código Material - valor: " + row[2];
                        var codMaterial = Convert.ToInt32(row[2]);
                    }

                    if (!string.IsNullOrEmpty(row[3].ToString()))
                    {
                        columnaError = @"Fecha - valor: " + row[3];
                        var fecha = Convert.ToDateTime(row[3]);
                    }

                    if (!string.IsNullOrEmpty(row[4].ToString()))
                    {
                        columnaError = @"Monto - valor: " + row[4];
                        var monto = Convert.ToSingle(row[4]);
                    }

                    if (!string.IsNullOrEmpty(row[5].ToString()))
                    {
                        columnaError = @"Tipo Documento - valor: " + row[5];
                        var tipoDocumento = Convert.ToInt32(row[5]);
                    }

                    if (!string.IsNullOrEmpty(row[6].ToString()))
                    {
                        columnaError = @"Numero Documento - valor: " + row[6];
                        var numDocum = Convert.ToDecimal(row[6]);
                    }

                    if (!string.IsNullOrEmpty(row[7].ToString()))
                    {
                        columnaError = @"Rut Beneficiario - valor: " + row[7];
                        var rutBeneficiario = Convert.ToInt32(row[7]);
                    }

                    if (!string.IsNullOrEmpty(row[8].ToString()))
                    {
                        columnaError = @"Nombre Beneficiario - valor: " + row[8];
                        var nombreBeneficiario = row[8].ToString();
                    }

                    if (!string.IsNullOrEmpty(row[9].ToString()))
                    {
                        columnaError = @"Es Docto Electronico - valor: " + row[9];
                        var esDoctoElectronico = row[9].ToString();
                    }

                    if (!string.IsNullOrEmpty(row[10].ToString()))
                    {
                        columnaError = @"Glosa - valor: " + row[10];
                        var glosa = row[10].ToString();
                    }

                    if (!string.IsNullOrEmpty(row[11].ToString()))
                    {
                        columnaError = @"Concepto - valor: " + row[11];
                        var concepto = Convert.ToInt32(row[11]);
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                msjValidaEntrada = "El formato de entrada no es correcto para la columna: " + columnaError;
                return false;
            }
        }




/*Llamada del Método*/
  if (ValidaTipoDatoEntrada(dt, tipoDeuda, ref msjValidaEntrada))
  {

  }
  else
  {
      fupArchivo.JSProperties["cpError"] = "true";
      fupArchivo.JSProperties["cpMensaje"] = "alert('" + msjValidaEntrada + "')";
    }