2012-11-09 80 views
0

我使用jqGrid。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); 
    } 
}); 

所以我想更新我的數據並更改它。 我的問題是,當我使用Double Click行事件時,我無法撥打afterSaveCell事件和當我使用afterSaveCell Event Dosen`t更新我的數據。 我想Both.so是什麼解決方案。

回答

0

我之前在the answer之前給你寫過你以前的回答,你不能把內聯編輯和單元格編輯混合在一起。僅當您使用單元格編輯時,回調afterSaveCell將被稱爲。因此,您應該使用aftersavefunc回調editRow根據來自其他兩列的新值重新計算totalAmount列的包含。例如,如果你有列amountquantity,需要根據新的值從列,你可以做以下重新計算totalAmount

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"))); 
     } 
    }); 
} 
0

@Oleg 我的解決方案

$("#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); 
    } 
});