c# - 应用分组时不同的 Kendo 网格数据源

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

我有一个 Kendo 网格,具有以下 decleration:

 @(Html.Kendo().Grid<AgencyAutomation.DomainLayer.ViewModels.InvoiceDetailViewModel>()
              .Name("invoiceDetailGrid")
             .BindTo((IEnumerable<AgencyAutomation.DomainLayer.ViewModels.InvoiceDetailViewModel>)@ViewBag.InvoiceDetails)
              .Columns(columns =>
              {
                  //
                  columns.Bound(p => p.AccountId).Hidden();
                  columns.Bound(p => p.StakeHolderId).Hidden();
                  columns.Bound(p => p.CommissionTypeId).Hidden();
                  columns.Bound(p => p.BillDescription).Hidden();
                  columns.Bound(p => p.GroupNo).Hidden().ClientGroupHeaderTemplate("<span  style='float:right'><button id='btnGroupEdit' onclick='ShowGroupEdit(#=value#)'  class='btn btn-primary round_blue'><i class='fa fa-edit'></i>&nbsp;Edit</button></span>");
                  columns.Bound(p => p.StakeHolderDesc).Filterable(true).Sortable(true).Title("Stakeholder").Groupable(true);
                  columns.Bound(p => p.StakeholderName).Filterable(true).Sortable(true).Title("Stakeholder Name");
                  columns.Bound(p => p.AmountType).Filterable(true).Sortable(true).Title("Amount Type");
                  columns.Bound(p => p.CommissionTypeDescription).Filterable(true).Sortable(true).Title("Commission Type");
                  columns.Bound(p => p.CommissionValue).Filterable(true).Sortable(true).Title("Commission Value").ClientTemplate("#if (CommissionValue > 0){#<div>#=CommissionValue#</div>#} else {#<div></div>#}#");
                  columns.Bound(p => p.PlanCode).Filterable(true).Sortable(true).Title("Plan Code");
                  columns.Bound(p => p.Amount).Filterable(true).Sortable(true).Title("Amount").Format("{0:c2}").ClientFooterTemplate("").ClientGroupFooterTemplate("<div> $#=sum#</div>").Format("{0:c2}");
                  columns.Bound(p => p.GroupNo).Hidden();

                 // columns.Bound(p => p.InvoiceDetailId).ClientTemplate(gridRowIcons).Title("").Filterable(false).Width(90);

              })
             .Pageable(pageable => pageable.ButtonCount(5).PageSizes(true))
              .Filterable()

              .Selectable(selectable => selectable
              .Mode(GridSelectionMode.Single))
              .Navigatable()
              .Groupable(p => p.Enabled(false))
              .DataSource(dataSource => dataSource


              .Ajax()
              .Aggregates(aggregates =>
            {
                aggregates.Add(p => p.Amount).Sum();
            })
                     .Group(groups => groups.Add(p => p.GroupNo))
                  .Model(model =>
                  {
                      model.Id(p => p.InvoiceDetailId);
                  }))
              .Sortable()
              .Filterable()
        )

基于基于“GroupNo”的分组,我想修改弹出窗口中的特定部分,删除该组的现有行并将其替换为新的 Lineitems。不应用分组,我可以轻松访问数据源并操作数据。但是当我访问应用了分组的​​网格时,它的数据源长度只返回可用的组数,成员属性包含应用分组的字段。

我尝试使用以下命令删除分组:grid.dataSource.group([])grid.dataSource.group("") 但它没有改变数据源。

有什么建议吗?我对 Kendo 网格上的分组处理不太在意,显然这似乎很难破解

最佳答案

我遇到了同样的问题,并最终找到了适合我的解决方案。我希望这可以帮助别人。我刚刚结束枚举组并将项目插入一个数组,最终看起来像未分组的数据。

var grid = $("#gridAdminConfig").data("kendoGrid");
var groupedData = grid.dataSource.data();
var data = [];

//enumerate the groups and grab the actual items
for (var i = 0; i < groupedData.length; i++) {
 for (var j = 0; j < groupedData[i].items.length; j++) {
    data.push(groupedData[i].items[j]);
 }
}

关于c# - 应用分组时不同的 Kendo 网格数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29547386/

相关文章:

c# - 如何在 Entity Framework 中结合 inner join 和 left join

c# - 使用 jQuery 使用 WCF 服务

javascript - Knockout.js:从 JSON 获取可观察值

jquery - 如何获得 Kendo 网格行选择

asp.net-mvc - Kendo 网格日期时间格式

javascript - Kendo Grid 过滤器使用带有 column.values 的组合框而不是下拉列表

c# - C# 方法可以定义为采用的最大参数数量是多少?

jquery - 选择下拉菜单时显示图像

javascript - 带有 https url 的 jquery 和 post 方法安全性

c# - 无法检索例程的存储过程元数据