【问题标题】:Using aggregate functions with Kendo UI MVC Grid wrapper将聚合函数与 Kendo UI MVC Grid 包装器一起使用
【发布时间】:2013-01-25 20:22:21
【问题描述】:

规格

剑道:2012.3.1114

.Net:4.5

MVC:4.0

问题

我正在使用 DataTable 作为模型绑定我的网格,并且我需要聚合值。 如果我使用下面的 sn-p 作为我的基础(取自 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 控件的日子里,我可以设置聚合函数,您可以在添加绑定列的同时设置聚合,但在已向下移动到 DataSource 内部的 Kendo UI 包装器中。

Telerik 网格:

columns.Bound("ColumnName").Aggregate(aggregates => aggregates.Count().Min().Max())

如果我尝试在 DataSource 中设置聚合,我会得到一个可爱的异常“'count' is undefined”,这有点模糊。

if (column.ColumnName == "ProductID")
{
    columns
        .Bound(column.DataType, column.ColumnName)
        .ClientFooterTemplate("Count: #=count#");
}
...
.Aggregates(aggregates =>
{
aggregates.Add(a => "ProductID").Count();
})

有什么办法可以解决聚合问题?

【问题讨论】:

  • 我猜有人不喜欢我的问题。你至少能告诉我它有什么问题吗?我看了看,没有重复,我想我说清楚了……

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


【解决方案1】:

虽然这不能解决在数据网格上执行求和函数的问题,但这个答案是由 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多