我有一个订单行网格,其中包含一个Total列,使用模型定义中的total函数计算(Qty x Price):
schema: {
model: {
id: "id",
fields: {
id: { type: "string" },
orderId: { type: "number" },
lineNo: { type: "number" },
itemNo: { type: "string" },
...
price: { type: "number" },
qty: { type: "number" },
comment: { type: "string" },
},
total: function () {
return (this.get("qty") * this.get("price")).toFixed(2);
}
}
}
注意:我在模型定义中使用总函数而不是常规kendo模板的原因"#= Qty * price#"是我需要自定义编辑表单的总函数(其中有一个总字段需要在数量或价格更改时动态更新)。
列定义如下:
{
field: "total",
title: "Total",
width: 60,
template: "#= total() #",
}
这是一个掠夺者:http://plnkr.co/edit/YHiupWy49mvk4kZAqJTA?p=preview
我需要在网格之外有一个字段,它总是反映网格的总计(=总列数的总和),我已经在网格中放置了一个占位符,总计;这是总数应该显示的地方。
我怎么能这样做,最好是以AngularJS的方式?
编辑2014年9月15日,根据接受的答案,这是我使用的解决方案:
dataBound: function(e) {
var gridData = e.sender.dataSource.data();
$timeout(function() {
$scope.ticket.subTotal = 0;
for (var i = 0; i < gridData.length; i++) {
$scope.ticket.subTotal += gridData[i].qty*gridData[i].price;
}
});
}
请注意,我使用$ timeout,因为添加行是以Angular-aware方式完成的,而常规编辑则不是。通过使用$ timeout,$ apply将始终以安全的方式自动应用。
HTML:
<b>Grand Total: </b> <input type="text" ng-model="ticket.subTotal" />
更新了plunker:http://plnkr.co/edit/GJx1mxVqd4vvK0IlfpKw?p=preview
答案 0 :(得分:1)
您可以使用网格的数据绑定功能,如下所示
var Grandtotal=0;
$("#grid").kendoGrid({
..
..
dataBound: function (e) {
var grid = $("#grid").data("kendoGrid");
var gridData = grid.dataSource.view();
for (var i = 0; i < gridData.length; i++) {
(
Grandtotal+=gridData[i].qty*gridData[i].price;
}
}
}
)}
我希望这可以帮到你