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

如何创建显示分层平面数据的报告

环境

产品 Progress®Telerik®报告

描述

需求是在报告中递归地表示具有未知数量的层次结构的层次结构数据。数据是平坦的,就像来自SQL查询。例如,下面是一个JSON数据示例:

[{"ChildItem":" grandparent ", "ParentItem":null}, {"ChildItem":"Parent 1", "ParentItem":" grandparent "}, {"ChildItem":"Parent 2", "ParentItem":" grandparent "},…, {"ChildItem":"Child 1", "ParentItem":"Parent 1"}, {"ChildItem":"Child 2", "ParentItem":"Parent 1"},…, {"ChildItem":"Child 5", "ParentItem":"Parent 2"}, {"ChildItem":"Child 6", "ParentItem":"Parent 2"},…]

解决方案

主要的思想是在报告中引用自己SubReport项.每个子报告的数据将根据a的值进行筛选报告参数.这样,报告结构将基于数据分层地重新生成,当过滤掉所有数据时,递归的底部将被选中。解决方案在HierarchyFromFlatData.trdp演示报告。接下来我概述了设计报告时的要点。

该报告有一个JsonDataSource已分配并显示字段ChildItem,以及SubReport引用相同报告文档的项,即HierarchyFromFlatData.trdp.报表有一个默认值为的参数.的SubReport项目传递为ReportSource - >参数为字段赋值ChildItem的父报告。此值将根据参数筛选子报告数据,因此将只显示来自数据源的具有as的项目ParentItem当前的ChildItem为了构建正确的层次结构。这是报告过滤器

= IsNull(字段。ParentItem ' 1 ')= IsNull (Parameters.Parent。, ' 1 ')

的目的IsNull有条件的函数以上是允许比较时的电流ParentItem没有父母(它是),就像第一个数据项的情况一样-请参阅JSON数据。常量“1”可以是任何有效的常量值,并且两者应该相同表达式

主Report显示所有内容ChildItem字段中的记录ParentItem = Null作为单独的详细节实例,即在层次结构的第一层。与文本框相比,子报告项在右侧移位ChildItem形成第二层。它包含所有的记录ParentItemChildItem从上一层开始,依此类推。

另请参阅

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

在本文中
Baidu
map