功能
剑道:2012.3.1114
.Net:4.5
MVC:4.0
问题
我使用DataTable作为模型绑定我的网格,我需要有聚合值。 如果我使用下面的代码段作为我的基础(取自Kendo UI代码库),似乎无法设置聚合函数。
@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(columns => {
foreach (System.Data.DataColumn column in Model.Columns)
{
columns.Bound(column.DataType, column.ColumnName);
}
})
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Groupable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Read", "Home"))
)
)
回到Telerik MVC控件的时代,我可以设置聚合函数,你可以在添加绑定列时设置聚合,但是在Kendo UI包装器中已经向下移动到DataSource内部。
Telerik Grid:
columns.Bound("ColumnName").Aggregate(aggregates => aggregates.Count().Min().Max())
如果我尝试在DataSource中设置agregate,我会得到一个可爱的异常“'count'未定义”,这有点模糊。
if (column.ColumnName == "ProductID")
{
columns
.Bound(column.DataType, column.ColumnName)
.ClientFooterTemplate("Count: #=count#");
}
...
.Aggregates(aggregates =>
{
aggregates.Add(a => "ProductID").Count();
})
有没有办法解决这个问题?
答案 0 :(得分:7)
虽然这并没有解决在数据网格上执行求和函数的问题,但这个答案是由Kendo UI / Telerik支持团队提供的,并确实解决了上面提到的有关计数函数的问题:
@(Html.Kendo().Grid<dynamic>()
.Name("Grid")
.Columns(columns =>
{
foreach (System.Data.DataColumn column in Model.Columns)
{
var boundColumn = columns.Bound(column.ColumnName);
if (column.ColumnName == "ProductID")
{
boundColumn.ClientFooterTemplate("#= data.ProductID !== undefined ? ProductID.count : ''#");
}
}
})
.Pageable()
.Sortable()
.AutoBind(false)
.Scrollable()
.Filterable()
.Groupable()
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
foreach (System.Data.DataColumn column in Model.Columns)
{
model.Field(column.ColumnName, column.DataType);
}
})
.Read(read => read.Action("Read", "Home"))
)
)
<script>
$(document).ready(function () {
var grid = $("#Grid").data("kendoGrid");
grid.dataSource.aggregate(
[
{
field: "ProductID",
aggregate: "count"
}
]);
});
</script>