Search code examples
kendo-uikendo-gridgroupingserver-sidekendo-ui-mvc

How to set initial grouping for a Kendo grid


So I've got the following piece of code working server side using Kendo Grid. However, I am confused on the next step.

How do I set the grid to initially group by Income_Party? Also is it possible to add in a total amount per grouping?

@(Html.Kendo().Grid(Model.IncomeView)
  .Name("grid")
  .Columns(columns =>
  {
      columns.Bound(model => model.INC_INCOME_DESCRIPTION);
      columns.Bound(item => item.INC_INCOME_AMOUNT);
      columns.Bound(item => item.INC_INCOME_PARTY);
      columns.Template(@<text>
                   @Html.ActionLink("Edit", "Edit", "MyLink" + item.VIEW_TYPE, new { id = item.GID, ReturnAction = "IncomeAndExpenses" }, null)  
                 </text>)
                  .ClientTemplate("<a href='/brunch/statistics/brunchid=#= BrunchCode#'>#=BrunchCode#</a>")
                  .Title("");
  })

)


Solution

  • You can set the initial groups and aggregates like this:

    @(Html.Kendo().Grid(Model.IncomeView)
      .Name("grid")
      .Columns(columns =>
      {
          columns.Bound(model => model.INC_INCOME_DESCRIPTION);
          columns.Bound(item => item.INC_INCOME_AMOUNT).GroupFooterTemplate(@<text>
                Total: @item.Sum
            </text>);
          columns.Bound(item => item.INC_INCOME_PARTY);
          columns.Template(@<text>
                       @Html.ActionLink("Edit", "Edit", "MyLink" + item.VIEW_TYPE, new { id = item.GID, ReturnAction = "IncomeAndExpenses" }, null)  
                     </text>)
                      .ClientTemplate("<a href='/brunch/statistics/brunchid=#= BrunchCode#'>#=BrunchCode#</a>")
                      .Title("");
      })
      .DataSource(dataSource => dataSource
            .Server()
            .Aggregates(aggregates =>
            {
                aggregates.Add(p => p.INC_INCOME_AMOUNT).Sum();
            })
            .Group(groups => groups.Add(p => p.INC_INCOME_PARTY))
      )