我在mvc asp.net核心应用程序中有一个kendo网格。当我将网格扩展到子网格时,在大多数情况下,它按预期工作,显示子网格,然后调用控制器并返回所需的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>
答案 0 :(得分:0)
我注意到失败的行有一个模式。
如果我在第1行展开根报告。子报告在扩展它的第1行时会失败。 如果我在第3行展开了根报告。子报告在扩展它的第3行时会失败。
这让我看看我的网格的名称属性。标签。我在最后添加了一个ID作为一种唯一识别它们的方式。我从标签中删除了ID。对于网格,我必须使用模型值和Ids的组合进一步识别它们。
如果有人比我更了解这种行为,请发表评论。