树数据集实现组织树报表
1. 描述
组织树报表中由id与父id来实现组织树报表,若层级数较多时,对每个单元格设置过滤条件和形态会比较繁琐,因此FineReport提供了一种特殊的数据集——树数据集,只需要简单的设置就能自动递归出层级,方便的实现如下图组织树报表:
图一:纵向组织树
2. 构建树数据集
一般分两步构建树数据集:
1)添加带有层次关系的普通数据集;
2)基于普通数据集构建树数据集。
2.1 添加普通数据集
添加数据库查询数据集ds1,并取出原始数据,SQL语句为SELECT * FROM 公司部门。
2.2 构建树数据集
1)根据父标记字段构建树 原始表结构中符合ID、parentID(父ID)结构,我们可以通过parentID(父ID)这个标记字段来生成树,添加树数据集,如下图。
需要特别强调的是,此种情况,需要有唯一根节点(就是下图parentID为空的节点)。如果没有,那么构建树时会无法正常建立索引,最后在前台使用下拉树控件时容易出现一些功能问题,比如控件不能给默认值、比如不能模糊搜索等。
预览树数据集,可看到已自动生成递归树数据,FR_GEN_0为最高层,依次往下,如下:
3.1 示例一:纵向组织树
1)模板设计按照下图所示将对应的数据列拖入到单元格中。
设置所有单元格为纵向扩展并设置上父格:A2单元格的上父格设置为A1,A3单元格的上父格设置为A2:
2)隐藏空白行
2)隐藏空白行
通过上面预览数据可以看到从第一层FR_GEN_0开始,就会有空白数据。
这是因为数据库中存储的数据要规范对齐,示例中有三列,分别是:总部、部门、员工。没有值的单元格使用空白(null)填充。
在模板制作过程中,从总部(第一层级)开始就会有空白数据,需要将空白数据隐藏掉,选中A2和A3单元格,添加条件属性,当数据为空时隐藏该行,如下图:
注意是“==”,不是“=”
3) 其它设置
由于自动生成的字段是编码,可以使用数据字典将其转为对应的部门名称,如下图:
1)模板设计
按照下图所示将对应的数据列拖入到单元格中,设置单元格横向扩展并设置父格:B1单元格的左父格设置为A1,C1单元格的左父格设置为B1:
通过上面预览数据可以看到从第一层FR_GEN_0开始,就会有空白数据。
这是因为数据库中存储的数据要规范对齐,示例中有三列,分别是:总部、部门、员工。没有值的单元格使用空白(null)填充。
在模板制作过程中,从总部(第一层级)开始就会有空白数据,需要将空白数据隐藏掉,选中B1和C1单元格,添加条件属性,当数据为空时隐藏该列,如下图:
注意是“==”,不是“=”
由于自动生成的字段是编码,可以使用数据字典将其转为对应的部门名称,如下图:
1)问题描述
存储过程直接生成树数据集无效,如图:
先建立数据库查询数据集ds1,然后数据集ds1里 “call 存储过程名 存储过程参数”,再用ds1生成树数据集 。
注:若是调用数据库存储过程取数,官方只支持查询语句select进行取数,其他写法(例如下面的写法), 返回的结果不能保证,不建议使用 。
具体操作步骤如下:
新建一个数据库查询,输入:{call username.package.procedure('${p1}','${p2}','${p3}',?)},然后设置下参数的初值,这样就产生了一个普通的数据集ds1。
再通过数据集ds1,设置树数据集就好了,此时就可以正常生成树数据集了,如图:
4. 效果预览
4.1 PC端预览效果(示例一)
4.2 移动端预览效果(示例一)
5. 已完成模板
示例一模板效果在线查看请点击树数据集组织树报表.cpt
已完成的模板,可参见%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\GroupReport\树数据集组织树报表.cpt。
附件列表
文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201)