Kendo Grid - 不显示某些子网格

时间:2018-05-15 08:21:41

标签: razor asp.net-core kendo-ui kendo-grid

我在mvc asp.net核心应用程序中有一个kendo网格。当我将网格扩展到子网格时,在大多数情况下,它按预期工作,显示子网格,然后调用控制器并返回所需的json数据。

当我展开根网格以选择要展开的行时。在特定行上,创建子网格时,根报表几乎已折叠,列将消失,所有数据行也将消失。随后,对控制器的调用仍然正常执行,并返回数据。但是,数据不会显示在屏幕上,因为它不会显示子报告。

为什么代码可以生成一行的子报告,而不适用于另一行?

  • 这在我的设置中是可重复的。即 - 我可以刷新并重启我的浏览器/应用程序,相同的行会导致此问题。

单击第二行会导致报表崩溃,就像删除了数据源和列一样。

enter image description here enter image description here

请注意,我所说的根报告实际上是一份子报告。

根报告:

<script id="SalesByLocDept_DetailTemplate" type="text/x-kendo-tmpl">
        <h4>Department Sales Summary For Location: #=LocCode# - #=LocName#</h4>
        @(Html.Kendo().TabStrip()
                            .Name("sales_by_loc_tabstrip_#=ID#")
                            .Items(items =>
                            {
                                items.Add()
                                    .Text("Department Summary")
                                    .Selected(true)
                                    .Content(@<text>
                                    @(Html.Kendo().Grid<SalesSummaryByDepartmentViewModel>()
                                                    .Name("sales_by_loc_dept_tabstrip_#=ID#")
                                                    .Scrollable()
                                                    .Reorderable(r => r.Columns(true))
                                                    .Resizable(r => r.Columns(true))
                                                    .ColumnMenu()
                                                    .Columns(columns =>
                                                    {
                                                    columns.Bound(f => f.DeptCode).Title("Department Code");
                                                    columns.Bound(f => f.DeptDesc).Title("Department Name");
                                                    columns.Bound(f => f.TakingsToday).Title("Today's Takings");
                                                    columns.Bound(f => f.MarginToday).Title("Today's Margin");
                                                    columns.Bound(f => f.TakingsMonth).Title("Month's Takings");
                                                    columns.Bound(f => f.MarginMonth).Title("Month's Margin");
                                                    columns.Bound(f => f.TakingsYear).Title("Year's Takings");
                                                    columns.Bound(f => f.MarginYear).Title("Year's Margin");
                                                    columns.Bound(f => f.TakingsToDate).Title("Takings To Date");
                                                    columns.Bound(f => f.MarginToDate).Title("Margin To Date");
                                                })
                                                    .Pageable(pageable => pageable.Refresh(true).PageSizes(new int[] { 100, 150, 200 }))
                                                    .Sortable()
                                                    .Selectable()
                                                    .Navigatable()
                                                    .Filterable()
                                                    .ClientDetailTemplateId("SalesByLocDeptGroup_DetailTemplate")
                                                    .DataSource(dataSource => dataSource
                                                        .Ajax()
                                                        .Model(model => { model.Id(detail => detail.ID); })
                                                        .Read(read => read.Action("SalesByLocDepartment_Read", "Reporting", new { LocCode = "#=LocCode#" }))
                                                    ).ToClientTemplate()
                                    )</text>);
                    }).ToClientTemplate()
        )
    </script>

子报告:

        <script id="SalesByLocDeptGroup_DetailTemplate" type="text/x-kendo-tmpl">
        <h4>Group Sales Summary For Location: #=LocCode# - #=LocName#, Department: #=DeptCode# - #=DeptDesc#</h4>
        @(Html.Kendo().TabStrip()
                            .Name("sales_by_loc_dept_tabstrip_#=ID#")
                            .Items(items =>
                            {
                                items.Add()
                                    .Text("Group Summary")
                                    .Selected(true)
                                    .Content(@<text>
                                    @(Html.Kendo().Grid<SalesSummaryByGroupViewModel>()
                                                    .Name("sales_by_loc_dept_group_tabstrip_#=ID#")
                                                    .Scrollable()
                                                    .Reorderable(r => r.Columns(true))
                                                    .Resizable(r => r.Columns(true))
                                                    .ColumnMenu()
                                                    .Columns(columns =>
                                                    {
                                                    columns.Bound(f => f.GroupCode).Title("Group Code");
                                                    columns.Bound(f => f.GroupDesc).Title("Group Name");
                                                    columns.Bound(f => f.TakingsToday).Title("Today's Takings");
                                                    columns.Bound(f => f.MarginToday).Title("Today's Margin");
                                                    columns.Bound(f => f.TakingsMonth).Title("Month's Takings");
                                                    columns.Bound(f => f.MarginMonth).Title("Month's Margin");
                                                    columns.Bound(f => f.TakingsYear).Title("Year's Takings");
                                                    columns.Bound(f => f.MarginYear).Title("Year's Margin");
                                                    columns.Bound(f => f.TakingsToDate).Title("Takings To Date");
                                                    columns.Bound(f => f.MarginToDate).Title("Margin To Date");
                                                })
                                                    .Pageable(pageable => pageable.Refresh(true).PageSizes(new int[] { 100, 150, 200 }))
                                                    .Sortable()
                                                    .Selectable()
                                                    .Navigatable()
                                                    .Filterable()
                                                    .ClientDetailTemplateId("SalesByLocDeptGroupProduct_DetailTemplate")
                                                    .DataSource(dataSource => dataSource
                                                        .Ajax()
                                                        .Model(model => { model.Id(detail => detail.ID); })
                                                        .Read(read => read.Action("SalesByLocDeptGroup_Read", "Reporting", new { LocCode = "#=LocCode#", DeptCode = "#=DeptCode#" }))
                                                    ).ToClientTemplate()
                                    )</text>);
                        }).ToClientTemplate()
        )
    </script>

1 个答案:

答案 0 :(得分:0)

我注意到失败的行有一个模式。

如果我在第1行展开根报告。子报告在扩展它的第1行时会失败。 如果我在第3行展开了根报告。子报告在扩展它的第3行时会失败。

这让我看看我的网格的名称属性。标签。我在最后添加了一个ID作为一种唯一识别它们的方式。我从标签中删除了ID。对于网格,我必须使用模型值和Ids的组合进一步识别它们。

如果有人比我更了解这种行为,请发表评论。