lunes, 24 de septiembre de 2018

C# - JQUERY edición de combo en cascada

//fueron eliminadas columnas, para darle mas importancia al ejemplo.-
var lastsel;
        function defineGridGvDoctosCompras() {
            try {
                $("#gvDoctosCompras").jqGrid({
                    datatype: "local",
                    colNames: ['Tipo', 'Proveedor', 'modo_pago', 'Nómina/HCP', 'Modo Pago (Edit.)', 'cod_inst_financ', 'Banco (Edit.)', 'Cuenta Corriente (Edit.)',],
                    colModel: [{ name: 'desc_tipo', index: 'desc_tipo', align: 'center', width: '100px', editable: false, hidden: false },
                    { name: 'proveedor_completo', index: 'proveedor_completo', align: 'center', width: '250px', editable: false, hidden: false },
                    { name: 'modo_pago', index: 'modo_pago', align: 'center', width: '100px', editable: false, hidden: true },
                    { name: 'correl_hcp', index: 'correl_hcp', align: 'right', width: '100px', editable: false, hidden: false },
                    {
                        name: 'desc_modo_pago', index: 'desc_modo_pago', width: '200px', resizable: true, align: 'center', sorttype:
                        'text', editable: true, edittype: 'select',
                        editoptions: {
                            value: GetModoPago()//, //JC comento porque gatillo carga atraves de eventos de celda.-
                            //dataEvents: [
                            //    { type: 'change', fn: function (e) { SetBancos($(e.target).val(), e.target); } },
                            //    { type: 'keyup', fn: function (e) { $(e.target).trigger('change'); } }
                            //]
                        }
                    },
                    { name: 'cod_inst_financ', index: 'cod_inst_financ', align: 'center', width: '100px', editable: false, hidden: true },
                    {
                        name: 'desc_banco', index: 'desc_banco', width: '200px', resizable: true, align: 'center', sorttype:
                        'text', editable: true, edittype: 'select', editoptions: { value: GetBancos() }
                    }
                   ],
                    url: "Paginas/Compras/AdmPago/DocumentosCompras.aspx",
                    multiselect: true,
                    cellsubmit: 'clientArray', //para activar la edicion de la grilla
                    rowNum: -1,
                    cellEdit: true, //activo la edición por celda
                    pgbuttons: false,
                    pager: $('#pager'),
                    viewrecords: true,
                    width: 940,
                    shrinkToFit: false,
                    autowidth: false,
                    forceFit: true,
                    height: 540,
                    footerrow: true,
                    editurl: jutils.pageName(),
                    onSelectRow: function (id, status) {
                        if (id && id !== lastsel) {
                            $('#gvDoctosCompras').jqGrid('restoreRow', lastsel);
                        }
                        //jQuery("#gvDoctosCompras").jqGrid('editRow', id, true); // activo la edición por fila
                    },
                    afterEditCell: function (id, name, val, iRow, iCol) {
                        //if (name === 'desc_modo_pago') {
                        //    if (val === '4') //Abono en cuenta corriente
                        //    {
                        //        $("#gvDoctosCompras").jqGrid("setColProp", "desc_banco", { editoptions: { value: '18:ITAU' } });
                        //    } else {
                        //        $("#gvDoctosCompras").setColProp('desc_banco',
                        //            { editoptions: { value: GetBancos() } });
                        //    }
                        //}
                        //JOEL --> Aqui debo programar que desc_banco no se pueda cambiar si desc_modo_pago es 4
                    },
                    beforeSubmitCell: function (id, name, val, iRow, iCol) {
                        if (name === 'desc_modo_pago') {
                            if (val === '4') //Abono en cuenta corriente
                            {
                                //$("#gvDoctosCompras").setColProp('desc_banco',{ editoptions: { value: GetBancos2() } }); //edición del combo si los valores fueran dinamicos

                                $("#gvDoctosCompras").jqGrid("setColProp", "desc_banco", { editoptions: { value: '18:ITAU' } });
                                //$('#gvDoctosCompras').trigger('reloadGrid'); //refresca la grilla
                                //$("#gvDoctosCompras").jqGrid('setCell', id, 'cta_cte', '666-TEST'); //Edición de una celda.-
                            } else {
                                $("#gvDoctosCompras").setColProp('desc_banco',
                                    { editoptions: { value: GetBancos() } });
                                //$('#gvDoctosCompras').trigger('reloadGrid'); //refresca la grilla
                            }
                        }
                    },
                    gridComplete: function () {
                        var neto = jQuery("#gvDoctosCompras").jqGrid('getCol', 'neto', false, 'sum');
                        var exento = jQuery("#gvDoctosCompras").jqGrid('getCol', 'exento', false, 'sum');
                        var iva = jQuery("#gvDoctosCompras").jqGrid('getCol', 'iva', false, 'sum');
                        var sumaAnticipo = jQuery("#gvDoctosCompras").jqGrid('getCol', 'suma_anticipo', false, 'sum');
                        var montoMandato = jQuery("#gvDoctosCompras").jqGrid('getCol', 'monto_mandato', false, 'sum');
                        var total = jQuery("#gvDoctosCompras").jqGrid('getCol', 'total', false, 'sum');

                        jQuery("#gvDoctosCompras").jqGrid('footerData', 'set', { 'proveedor_completo': 'Totales', 'neto': neto, 'exento': exento, 'iva': iva, 'suma_anticipo': sumaAnticipo, 'monto_mandato': montoMandato, 'total': total });
                    }
                });
                $("#gvDoctosCompras").jqGrid('navGrid', "#pager", { edit: false, add: false, del: false, refresh: false, search: false });
            } catch (e) {
                jutils.showError(e, arguments.callee.name);
            }
        }



 //JC comento porque gatillo carga atraves de eventos de celda.-

        //function SetBancos(value, value2) {
        //    if (value === '4') //Abono en cuenta corriente
        //    {
        //        $("#gvDoctosCompras").setColProp('desc_banco',
        //            { editoptions: { value: GetBancos2() } });
        //    } else {
        //        $("#gvDoctosCompras").setColProp('desc_banco',
        //            { editoptions: { value: GetBancos() } });
        //    }
        //}