Error saving JqGrid edition

0

I'm trying to make the edit online and local mode, the error is that when editing a record not edit the correct one but another, and that is because it does not get the correct rowid just returns me:

last

that is the rowid that returns to me by console, I attach my code:

 var mydata=[]
    $("#grid_productosfactura").jqGrid({
        data:mydata,
        editurl: 'clientArray',
        datatype: "local",
        colModel: [
            { label: 'id_producto', name: 'id_producto', width: 15, align:'center', hidden:true},
            { label: 'id_bodega', name: 'id_bodega', width: 15, align:'center', hidden:true},
            { label: 'Codigo', name: 'codigo', width: 30, align:'left' ,key:true},
            { label: 'Producto', name: 'producto', width: 40, align:'left', cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'style="white-space: normal;"' } },
            { label: 'V.Unitario', name: 'precio', width: 20, align:'center',formatter: 'number', formatoptions: { decimalPlaces: 2 } },
            { label: 'Cantidad', name: 'cantidad', width: 20, align:'center' , editable: true, edittype:"text",
                //controla solo integer
                editoptions:{ 
                    size: 15, maxlengh: 15,
                    dataInit: function(element) {
                        $(element).keypress(function(e){
                            if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
                                return false;
                            }
                        });
                    }
                }
            },
            { label: 'Descuento', name: 'descuento', width: 20, align:'center', editable: true, edittype:"text",
                //controla solo integer
                editoptions:{ 
                    size: 15, maxlengh: 15,
                    dataInit: function(element) {
                        $(element).keypress(function(e){
                            if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
                                return false;
                            }
                        });
                    }
                }
            },
            { label: 'V. Total', name: 'vtotal', width: 20, align:'center',formatter: 'number', formatoptions: { decimalPlaces: 2 } },
            { label: '<span class="badge bg-green">Acción</span>', name: "acciones", formatter: buttonFormatter, width: 25, align:'center', search: false,
                sortable: false, hidedlg: true, resizable: false, editable: false, viewable: false
            }
        ],
        sortname: 'CustomerID',
        sortorder : 'asc',
        loadonce: true,
        viewrecords: true,
        width: 800,
        rownumbers: true,
        height: 250,
        rowNum: 1000,
        pager: "#pager_productosfactura",
        footerrow: true,
        /* EDICION LOCAL */
        cellEdit: true,
        cellsubmit: 'clientArray',
        editurl: 'clientArray',
        afterSaveCell : function(rowid,name,val,iRow,iCol) {

            //data por fila jqgrid
           var dataFromTheRow = jQuery('#grid_productosfactura').jqGrid ('getRowData', rowid);
           console.log(dataFromTheRow);
           var vunitario = dataFromTheRow.precio;
           var cantidad  = dataFromTheRow.cantidad;

           //validar descuento
           var descuento = $.trim(dataFromTheRow.descuento);
           if (descuento == "" || descuento == 'undefined' ){
            descuento = 0;
            dataFromTheRow.descuento    = 0;
           }else if (parseFloat(descuento) > parseFloat(vunitario)){
            swal('El descuento no puede exceder el precio de Venta !!', '', 'warning');
            descuento = 0;
            dataFromTheRow.descuento    = 0;
           }

           //validar cantidad

           if (cantidad == 0){
                swal('La cantidad no puede ser cero !!', '', 'warning');
                cantidad_real           = 1;
                dataFromTheRow.cantidad = 1;
           }else{
                dataFromTheRow.cantidad = cantidad;
                cantidad_real = dataFromTheRow.cantidad;
           }

            //agregar nuevos datos
            dataFromTheRow.vtotal       = (parseFloat(vunitario) * parseFloat(cantidad_real)) - parseFloat(descuento);
            $('#grid_productosfactura').jqGrid('setRowData', rowid, dataFromTheRow);

            //sumar footer
            var $grid = $('#modalVenta #grid_productosfactura');
            var colSum = $grid.jqGrid('getCol', 'vtotal', false, 'sum');
            $grid.jqGrid('footerData', 'set', { 'cantidad': 'Subtotal:' });
            $grid.jqGrid('footerData', 'set', { 'vtotal': colSum });
           //reset selected
           $grid.jqGrid('resetSelection');
        },
        /*gridComplete: function() {
            var $grid = $('#grid_productosfactura');
            var colSum = $grid.jqGrid('getCol', 'vtotal', false, 'sum');
            $grid.jqGrid('footerData', 'set', { 'vtotal' colSum });
        }*/
    });

This error only occurs when I have more than two rows and edit any of them always affects the first edition but not the chosen one.

Maybe a suggestion. thanks .. !!

    
asked by Diego Avila 26.12.2018 в 18:54
source

0 answers