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;
         }
     }
 ]