【问题标题】:Kendo Grid - Not showing certain sub grids剑道网格 - 不显示某些子网格
【发布时间】:2018-05-15 08:21:41
【问题描述】:

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

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

为什么用于为一行生成子报告的代码对另一行不起作用?

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

单击第二行会导致报表折叠,就好像它的数据源和列已被删除。

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

根报告:

<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 行。展开第 1 行时子报表将失败。如果单击根报表上的第 2 行,则在展开子报表上的第 2 行时。它会失败。等等。我会看看我能做些什么来解决这个问题。

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


【解决方案1】:

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

如果我在第 1 行展开根报表。子报表在展开第 1 行时会失败。 如果我在第 3 行展开根报告。子报告在展开第 3 行时会失败。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-10
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多