答案 0 :(得分:1)
实现您的要求的最简单方法是使用jsonmap
和sorttype
定义为函数,它返回列的计算值。此外,您需要实现afterSetRow
回调,修改行后修复该值(setRowData
之后)。
相应的实现可能类似于the demo。该演示使用total
列定义网格,该列显示amount
和tax
列的总和。演示代码如下:
var calculateTotal = function (item) {
return parseFloat(item.amount) + parseFloat(item.tax);
};
$("#list").jqGrid({
...
colModel: [
...
{ name: "amount", template: "number", ... },
{ name: "tax", template: "number", ... },
{ name: "total", width: 76, template: "number", editable: false,
jsonmap: function (item) {
return calculateTotal(item);
},
sorttype: function (cellValue, item) {
return calculateTotal(item);
}},
...
],
afterSetRow: function (options) {
var item = options.inputData;
if (item.total === undefined) {
// test is required to prevent recursion
$(this).jqGrid("setRowData", options.rowid, {
total: calculateTotal(item)
});
}
}
...
});