如何在Kendo Grid中的ClientGroupHeaderTemplate中显示聚合值

时间:2017-08-28 16:39:58

标签: kendo-ui kendo-grid kendo-asp.net-mvc

我正在使用UI for ASP.NET MVC来构建网格。我想按Name列对行进行分组,并在组标题中显示Cost列的总和。

这是我的网格

     @(Html.Kendo().Grid<GridModel>()
            .Name("myGrid")
            .Columns(col =>
            {
                col.Bound(p => p.Name).Width(300);
                col.Bound(p => p.Year).Width(100);
                col.Bound(p => p.Cost).Width(100)
                    .ClientGroupHeaderTemplate("Total: #: sum #");
            })
            .AutoBind(true)
            .DataSource(dataSource => dataSource
                .Ajax()
                .Aggregates(aggregates =>
                {
                    aggregates.Add(p => p.Cost).Sum();                        
                })
                .Group(groups => groups.Add(p => p.Name))
                .Read(read => read
                    .Action("GetData", "Home", new { ID = Model.ID }))
                .ServerOperation(false))
            )

上面的网格不会在组头中显示或呈现总和。

demo here显示了如何执行此操作,但它显示了组页脚中的聚合值。我想在群组标题中显示sum

在上面的网格中,如果我用ClientGroupHeaderTemplate替换ClientGroupFooterTemplate,那么我会在组页脚中看到总和,但我想在组头中显示总和。

我在这里缺少什么

更新1
另外,根据documentation aggregates对象在ClientGroupHeaderTemplate中可用,它提供对所有可用聚合的访问

  

聚合 - 提供对所有可用聚合的访问,例如   aggregates.fieldName1.sum或aggregates.fieldName2.average

所以我试过

 col.Bound(p => p.Cost).Width(100)
                .ClientGroupHeaderTemplate("Total: #= aggregates.Cost.sum #");

但这也不起作用。

看起来ClientGroupHeaderTemplate仅在列是组的一部分时才有效。

就我而言,我按Name列进行分组,因此Cost列不属于群组

1 个答案:

答案 0 :(得分:1)

aggregates不适用于旧版本的剑道

没有分组 试着把它放在javascript中

var aggregates;

$(function(){
    // get aggregates from datasource. Access to all aggregates
    aggregates = $("#grid").data("kendoGrid").dataSource.aggregates();
})

随着视野中的这个

 col.Bound(p => p.Cost).Width(100).ClientGroupHeaderTemplate("Total: #= aggregates.Cost.sum #");