0

I am Use jqGrid.

$("#list").jqgrid(){
    ....
    editurl:"editMedicineGridData.html",
    onCellSelect : function(rowid, iCol, cellcontent) {
        $('#prescribedDate').val(jQuery("#madicineGrid").jqGrid('getCell',rowid, 'PrescriptionDate'));
    },
    gridComplete: function(){ 
        var grid = $("#madicineGrid"),
            sum = grid.jqGrid('getCol','totalAmount', false, 'sum');
        $('#totalMedicineCharge').html(sum);
    },
    ondblClickRow: function (rowid,name,val,iRow,iCol) {
        $(this).jqGrid('editRow', rowid, true, null, null, null, {}, function (rowid) {
        });
    },
    afterSaveCell : function(rowid,name,val,iRow,iCol) {
        if(name == 'SaleQuantity') {
            var Qval = jQuery("#madicineGrid").jqGrid('getCell',rowid,iCol+1);
            var Aval = jQuery("#madicineGrid").jqGrid('getCell',rowid,iCol);
            jQuery("#madicineGrid").jqGrid('setRowData',rowid,{totalAmount: parseFloat(Aval) * parseFloat(Qval)});
        }
        var grid = $("#madicineGrid"),
            sum = grid.jqGrid('getCol','totalAmount', false, 'sum');
       $('#totalMedicineCharge').html(sum);
    } 
});

so I want Update my data and Change it. My Problem is that when I use Double Click row event i cant call afterSaveCell Event and When I use afterSaveCell Event Dosen`t Update my data. I want Both.so What's Solutions.

Oleg
  • 220,925
  • 34
  • 403
  • 798
Ashish Mehta
  • 7,226
  • 4
  • 25
  • 52

2 Answers2

0

I wrote you before in the answer on your previous answer that you can't mix inline editing with cell editing. The callback afterSaveCell will be called only if you use cell editing. So you should use aftersavefunc callback of editRow to recalculate contain of the totalAmount column based on new value from two other columns. For example if you have columns amount and quantity and need recalculate totalAmount based on the new values from the columns you can do the following:

ondblClickRow: function (rowid,name,val,iRow,iCol) {
    $(this).jqGrid("editRow", rowid, {
        keys: true,
        aftersavefunc: function (rowid) {
            $(this).jqGrid("setCell", rowid, "totalAmount",
                parseFloat($(this).jqGrid("getCell", rowid, "amount")) *
                parseFloat($(this).jqGrid("getCell", rowid, "quantity")));
        }
    });
}
Community
  • 1
  • 1
Oleg
  • 220,925
  • 34
  • 403
  • 798
0

@Oleg My Solution

$("#list").jqgrid(){
    ....
    editurl:"editMedicineGridData.html",
    onCellSelect : function(rowid, iCol, cellcontent) {
        $('#prescribedDate').val(jQuery("#madicineGrid").jqGrid('getCell',rowid, 'PrescriptionDate'));
    },
    gridComplete: function(){ 
        var grid = $("#madicineGrid"),
            sum = grid.jqGrid('getCol','totalAmount', false, 'sum');
        $('#totalMedicineCharge').html(sum);
    },
    beforeSubmitCell : function(rowid,celname,value,iRow,iCol)
    {
     if(celname=='SaleQuantity'){
return {'SaleQuantity':value,'id':rowid,'oper':'edit','Amount':jQuery("#madicineGrid").jqGrid('getCell',rowid,'Amount')};   
}},
afterSaveCell : function(rowid,name,val,iRow,iCol) {
        if(name == 'SaleQuantity') {
            var Qval = jQuery("#madicineGrid").jqGrid('getCell',rowid,'SaleQuantity');
            var Aval = jQuery("#madicineGrid").jqGrid('getCell',rowid,'Amount');
            jQuery("#madicineGrid").jqGrid('setRowData',rowid,{totalAmount: parseFloat(Aval) * parseFloat(Qval)});
        }
        var grid = $("#madicineGrid"),
            sum = grid.jqGrid('getCol','totalAmount', false, 'sum');
       $('#totalMedicineCharge').html(sum);
    } 
});
Ashish Mehta
  • 7,226
  • 4
  • 25
  • 52