剑道网格聚合列

时间:2014-03-06 13:00:35

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

我用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");

})

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

试试这个

  • 首先确保您的模型列为十进制
  • 如果要使用页脚然后添加客户端页脚,请在网格末尾添加“总计列”。
  • 如图所示添加聚合
  • 添加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 * ** * ** * ** * < / EM> ** * ** * ***

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();
            });

        }

此致

Shaz

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

您是否使用LinQ或ADO进行数据访问?无论它是什么都没关系,但您可以使用LinQ查询或存储过程返回总和,并将总和与模型类的属性联系起来