历史版本16 :树数据集 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

在数据库中常常可以看到一种表结构,表中包含了 ID 与 parent ID 两个字段或者某一个字段的长度有一定规律,这种表结构就存在着一种层级关系,通过下拉树或者折叠树来显示层级结构,比如说部门的层级结构,如下图:


那么如何通过将数据表中的二维结构展现出这种树状的层级关系呢,FineReport 提供了树数据集的概念,为控件绑定树数据集, Web 端查看时就会自动生成树形层级结构。

2. 示例编辑

2.1 新建数据集

在数据集面板中新建一个数据集 ds1:SELECT * FROM 公司部门,如下图:



2.2 新建树数据集

在上面的 ds1 数据集的基础上创建一个树数据集,将公司部门的层级结构显示出来。

在数据集面板中点击添加按钮,选择树数据集,如下图:
222

1)依赖所选数据集的父标记字段构建树

树数据集来源于上面创建的 ds1 数据集,公司部门中有一个部门 ID 和上级 ID,故可以使用依赖所选数据集的父标记字段构建树,如下图。

需要特别强调的是,此种情况,需要有唯一根节点(就是上级 ID 为空的节点)。

如果没有,那么构建树时会无法正常建立索引,最后在前台使用下拉树控件时容易出现一些功能问题,比如控件不能给默认值、比如不能模糊搜索等。


点击预览按钮,可以看到如下图所示的数据:



2)依赖所选数据集的标记字段的长度构建树

如果数据表中的字段没有父级字段,而是通过字段的长度来分辨其级别,如下图,公司部门的部门 ID 字段,其字段长度不一致,但是存在一定的规律,截止到第一个数字表示第一层级部门的部门 ID,截止到第二个数字表示第二层级部门的部门 ID,以此类推:



我们再新建一个数据集,其数据集来源仍然是 ds1,选择依赖所选数据集的标记字段的长度构建树,原始标记字段为部门 ID,如下图:



FineReport 会自动识别部门 ID 字段里面的规律,效果与上面依赖所选数据集的父标记字段构建树的效果一致。

注:部门 ID,上级部门 ID,部门名是三个建树字段,在实际操作中,部门 ID 和部门名必须对应,不能存在部门 ID 相同的情况。


2.3 使用格式

树数据集必须是【本ID,父ID,显示名称】固定的列结构。使用过程中ID不一定为数字,可以为字符串。

对非此格式的数据,可以采用SQL的Union,递归等方式,组合数据结果后,放入数据集中。

以下示例一种格式转换方便理解,历史数据格式为同行的父子属性



经过转换后的SQL才可以放入数据集


微信截图_20201105103544.png



3. 典型应用编辑