【问题标题】:Kendo grid aggregate column剑道网格聚合柱
【发布时间】:2014-03-06 13:00:34
【问题描述】:

我正在用 12 列(12 个月)绑定剑道网格,我想要最后一列,它将是所有 12 个月(全年)的汇总。 我有这个:

@(Html.Kendo().Grid<WebAnalise.Models.map_sel_fabr_prod>()
.Name("grid")
.Columns(columns =>
{
    columns.Bound(p => p.nameFabr).Visible(true).Width(50).Title("Fabr");
    columns.Bound(p => p.nameProd).Width(100).Title("Prod");
    columns.Bound(p => p.tot01).Width(30).Title("Jan");
    columns.Bound(p => p.tot02).Width(30).Title("Fev");
    columns.Bound(p => p.tot03).Width(30).Title("Mar");
    columns.Bound(p => p.tot04).Width(30).Title("Abr");
    columns.Bound(p => p.tot05).Width(30).Title("Mai");
    columns.Bound(p => p.tot06).Width(30).Title("Jun");
    columns.Bound(p => p.tot07).Width(30).Title("Jul");
    columns.Bound(p => p.tot08).Width(30).Title("Ago");
    columns.Bound(p => p.tot09).Width(30).Title("Set");
    columns.Bound(p => p.tot10).Width(30).Title("Out");
    columns.Bound(p => p.tot11).Width(30).Title("Nov");
    columns.Bound(p => p.tot12).Width(30).Title("Dez");

//我要在此处添加新列!像这样的东西,但是聚合! (tot01 + tot02 + tot03 ... + tot12)!!不仅来自一列的值:

    columns.Bound(p => p.tot01).Width(30).Title("TOT");

})

有人可以帮忙吗?

【问题讨论】:

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


    【解决方案1】:

    试试这个

    • 首先确保您的模型列是十进制的
    • 如果要使用页脚,请在网格末尾添加总列,然后添加客户端页脚。
    • 如图所示添加聚合
    • 添加 Javascript
    • 最终总列将动态汇总给定列的总和,并将在页脚中显示总计。

    **************网格********

     @(Html.Kendo().Grid<WebAnalise.Models.map_sel_fabr_prod>()
        .Name("grid")
        .Columns(columns =>
        {
          columns.Bound(p => p.tot11).Width(30).Title("Nov");
          columns.Bound(p => p.tot12).Width(30).Title("Dez");
          columns.Bound(c => c.Total).Title("Total")
          .ClientTemplate("#= kendo.format('{0:c}',Total) #")  
          .ClientFooterTemplate("<div>Grand Total: #= kendo.format('{0:c}',sum) #</div>");
       }
        .DataSource(dataSource => dataSource
              .Ajax()
              .Aggregates(aggregates =>
              {
    
                 aggregates.Add(p => p.Total).Sum();                         
               })
              .PageSize(20)
              .Events(events => events.Error("error_handler"))
              .ServerOperation(false)                       
              .Events(e=>e.Edit("onEdit").Save("onSave"))
            )
    

    ********* Javascript*******************

    function onEdit(e)
            {
    
                var indexCell = e.container.context.cellIndex;           
                if (typeof indexCell != "undefined") {              
    
                    var input = e.container.find(".k-input");
                    input.blur(function () {
    
                        e.model.set("Total", (e.model.tot01 * e.model.tot02 *e.model.tot03);
    
    
                    });
    
                    var texbox = e.container.find(".text-box");
                    texbox.change(function () {                    
                       e.model.set("Total", (e.model.tot01 * e.model.tot02 *e.model.tot03);
    
                    });               
                 }           
    
            }
    
            function onSave(e)
            {
                //update the aggregate columns
                var dataSource = this.dataSource;
                e.model.one("change", function () {
                    dataSource.one("change", function () {
                        dataSource.aggregates().Total.sum;
                    });
                    dataSource.fetch();
                });
    
            }
    

    问候

    沙兹

    【讨论】:

      【解决方案2】:

      您可以使用 Kendo UI Grid 的内置聚合功能,如本演示所示:

      http://demos.telerik.com/kendo-ui/web/grid/aggregates.html

      您可以在最后一列的页脚模板中显示聚合信息(在演示中显示)

      【讨论】:

      • 我看到了那个例子,但我不明白如何在我的代码中使用它?...我想要其他列的聚合列..
      【解决方案3】:

      您是使用 LinQ 还是 ADO 进行数据访问???无论是哪一个都无所谓,但您可以使用 LinQ 查询或在存储过程中返回总和,并将总和与模型类的属性联系起来

      【讨论】:

      • LINQ,我正在尝试用剑道方法解决这个问题..但是像你说的那样在模型中创建一个属性..解决问题:) tks!!
      猜你喜欢
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多