kendo 网格中总和列的总和
Sum of sum columns in kendo grid
我有kendo网格java脚本分组如下
group: {
field: "ResourceName",
aggregates: [
{ field: "WeekOneUtilization", aggregate: "sum" },
{ field: "WeekTwoUtilization", aggregate: "sum" },
{ field: "WeekThreeUtilization", aggregate: "sum" },
{ field: "WeekFourUtilization", aggregate: "sum" }
]
},
aggregate: [{ field: "ProjectName", aggregate: "count" },
{ field: "WeekOneUtilization", aggregate: "sum" },
{ field: "WeekTwoUtilization", aggregate: "sum" },
{ field: "WeekThreeUtilization", aggregate: "sum" },
{ field: "WeekFourUtilization", aggregate: "sum" }]
我想得到四个星期的总和
结果如下
您可以为此使用 ClientTemplate
:
columns.Bound(p => p.Total).ClientTemplate("#= WeekOneUtilization + WeekTwoUtilization + WeekThreeUtilization + WeekFourUtilization #");
您的代码已在 JavaScript 中完成,这太棒了...现在您是(您的网格中)最接近上帝的人...让我们开始工作吧。
1) 转到数据源的模型,并在那里定义一些方便的计算对象...例如。
var yourDataSource = new kendo.data.DataSource({
schema:{
model: {
// Typical blah blah here
id: 'your-id-field',
fields: {
// Typical field declaration blah blah
},
// This handy function will calculate
// the sum of the 4 weeks in your row
sumOfAllWeeks: function(){
return this.get('WeekOneUtilization') +
this.get('WeekTwoUtilization') +
this.get('WeekThreeUtilization') +
this.get('WeekFourUtilization');
}
}
}
});
2) 现在您可以将这个闪亮的全新计算字段添加到您的聚合配置中,语法有点不同。
{ field: "sumOfAllWeeks()", aggregate: "sum" }
3) 但是,如果您只想让 kendo 处理网格中计算属性的聚合,则存在一个错误(也许现在已修复)...他错误地尝试调用您的字段名称"sumOfAllWeeks()" 作为函数而不是累加器,这与他对普通字段所做的不同。因此,在您的网格中,您必须将模板用作函数。
让我们通过在您的网格中为您的计算创建一个新列来说明这一点,就像这样...
// Your grid fields declaration
columns:[
// Here you may have your columns declared,
// as shown in your picture... so I save the blah blah
// Now we declare a column for your computed.
{
field: 'sumOfAllWeeks()',
aggregates: 'sum',
// This handles the group footer template
groupFooterTemplate: function(data){
return data['sumOfAllWeeks()'].sum;
},
// This handles the table footer template
footerTemplate: function(data){
return data['sumOfAllWeeks()'].sum;
}
}
]
我有kendo网格java脚本分组如下
group: {
field: "ResourceName",
aggregates: [
{ field: "WeekOneUtilization", aggregate: "sum" },
{ field: "WeekTwoUtilization", aggregate: "sum" },
{ field: "WeekThreeUtilization", aggregate: "sum" },
{ field: "WeekFourUtilization", aggregate: "sum" }
]
},
aggregate: [{ field: "ProjectName", aggregate: "count" },
{ field: "WeekOneUtilization", aggregate: "sum" },
{ field: "WeekTwoUtilization", aggregate: "sum" },
{ field: "WeekThreeUtilization", aggregate: "sum" },
{ field: "WeekFourUtilization", aggregate: "sum" }]
我想得到四个星期的总和
结果如下
您可以为此使用 ClientTemplate
:
columns.Bound(p => p.Total).ClientTemplate("#= WeekOneUtilization + WeekTwoUtilization + WeekThreeUtilization + WeekFourUtilization #");
您的代码已在 JavaScript 中完成,这太棒了...现在您是(您的网格中)最接近上帝的人...让我们开始工作吧。
1) 转到数据源的模型,并在那里定义一些方便的计算对象...例如。
var yourDataSource = new kendo.data.DataSource({
schema:{
model: {
// Typical blah blah here
id: 'your-id-field',
fields: {
// Typical field declaration blah blah
},
// This handy function will calculate
// the sum of the 4 weeks in your row
sumOfAllWeeks: function(){
return this.get('WeekOneUtilization') +
this.get('WeekTwoUtilization') +
this.get('WeekThreeUtilization') +
this.get('WeekFourUtilization');
}
}
}
});
2) 现在您可以将这个闪亮的全新计算字段添加到您的聚合配置中,语法有点不同。
{ field: "sumOfAllWeeks()", aggregate: "sum" }
3) 但是,如果您只想让 kendo 处理网格中计算属性的聚合,则存在一个错误(也许现在已修复)...他错误地尝试调用您的字段名称"sumOfAllWeeks()" 作为函数而不是累加器,这与他对普通字段所做的不同。因此,在您的网格中,您必须将模板用作函数。
让我们通过在您的网格中为您的计算创建一个新列来说明这一点,就像这样...
// Your grid fields declaration
columns:[
// Here you may have your columns declared,
// as shown in your picture... so I save the blah blah
// Now we declare a column for your computed.
{
field: 'sumOfAllWeeks()',
aggregates: 'sum',
// This handles the group footer template
groupFooterTemplate: function(data){
return data['sumOfAllWeeks()'].sum;
},
// This handles the table footer template
footerTemplate: function(data){
return data['sumOfAllWeeks()'].sum;
}
}
]