Telerik报告免费下载30天试用版

如何创建显示分层嵌套数据的报表

环境

产品 进度®Telerik®报告

描述

需求是递归地表示报表中具有未知数量的层次结构级别的层次结构数据。数据由嵌套的集合组成。例如,下面是一个JSON数据示例:

[{“名称”:“大父1”,“列表”:[{“名称”:“父1 - 1”、“列表”:[{“名称”:“孩子1-1-1”},{“名称”:“孩子1-1-2”},…]},…]},{ "Name":"Grand Parent 2", "List":[{ "Name":"Parent 2-1", "List":[{ "Name":"Child 2-1-1"},...] }, { "Name":"Parent 2-2", "List":[{ "Name":"Child 2-2-1"},{ "Name":"Child 2-2-2", "List":[{ "Name":"Grand Child 2-2-2-1"},...] },...] },...] },...]

解决方案1

我们使用一个通过a引用自身的报告SubReport项。的数据源每个子报表的字段设置为来自父报表的集合字段(上面JSON中的字段“List”)数据源。这样,报表结构将基于数据分层再现,当集合字段不再可用时,将触及递归的底部。文中给出了解决方案HierarchyFromNestedCollections.trdp演示报告。接下来,我概述了设计报告时的要点。该报告有一个数据源作为属性分配- theJsonDataSource使用分层嵌套数据收集,以及数据源分配与绑定通过以下步骤表达式

属性路径|表达式数据源| = ReportItem。父节点为空?ReportItem。数据源:ReportItem。Parent.DataObject.List

这样,如果Report没有父类(如层次结构表示的根报告),则默认为数据源将会是JsonDataSource作为属性分配,否则列表字段将成为层次结构表示中每个子报表的对应数据源。的SubReport项目有一个ReportSource将两者直接设置为属性,并使用以下命令绑定

属性路径|表达式ReportSource。Uri | =字段(“列表”)是空的?Null: "HierarchyFromNestedCollections.trdp"

上面的表达式修改ReportSource这样,当父报告中没有更多的字段“List”时数据源没有生成下一层的子报表,它将是递归的底部。的直接设置ReportSource属性,以便创建ReportSource对象,然后修改其Uri属性绑定。否则,ReportSource对象将是,这将导致上述异常绑定

解决方案2

中提出了另一种方法如何显示递归数据?论坛线程。更新后的示例可以从我们的GitHub存储库下载:HierarchicalDataRepresentation.zip

另请参阅

在本文中
Baidu
map