0

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

所以我想更新我的数据并更改它。我的问题是,当我使用双击行事件时,我无法调用afterSaveCell事件,而当我使用afterSaveCell事件时,请不要更新我的数据。我想要 Both.so 什么是解决方案。

4

2 回答 2

0

我之前在您之前的答案中写过您不能将内联编辑与单元格编辑混合使用。仅当您使用单元格编辑afterSaveCell时才会调用回调。因此,您应该使用editRow的回调根据其他两列的新值重新计算该列的包含。例如,如果您有列并且需要根据列中的新值重新计算,您可以执行以下操作:aftersavefunctotalAmountamountquantitytotalAmount

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")));
        }
    });
}
于 2012-11-09T09:01:36.377 回答
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);
    } 
});
于 2012-11-09T09:43:55.857 回答