我正在使用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
列不属于群组
答案 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 #");