历史版本2 :树控件构建方式 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

下拉树控件与视图树控件的定义方法其实是一样的,区别主要在于浏览器端预览时显示的效果不同。如下图所示:

Snag_3939fe8f.png

本文主要讲解树控件构建树的三种方式的区别及应用,应用示例主要以下拉树控件为例,视图树同理设置即可。

2. 构建方式对比编辑

1)自动构建

根据树数据集层级关系自动构建出下拉树,无需一层一层定义数据。

Snag_39993773.png

2)普通分层构建

通过 数据字典 一层一层定义下拉树,需要数据集中定义一些 layer 参数配合完成,将上一层的值作为参数值,过滤下一层的数据。

普通分层构建方式提供有「性能优先」选项,勾选后会提高加载效率,默认不勾选。

Snag_399d27df.png

勾选后,当有层目录下没有子节点,显示的时候仍会是+,点开无数据项。如下图所示:

Snag_399862ce.png

3)极速分层构建:

通过「数据集 」来定义下拉树的层级,相比「普通分层构建」,不需要 layer 参数配合,而是将数据按分类排列,每一层绑定数据列并设置依赖关系即可。

Snag_399ce47d.png

4)详细对比如下表所示:


自动构建普通分层构建极速分层构建
需要的数据集个数
一个多个一个或多个
需要的数据集类型树数据集普通数据集普通数据集
需要的数据结构

有对应关系的一列或两列字段,树关系完整,支持存在多个根节点

有对应关系的多列字段,sql中需要用 treelayer 函数进行过滤

有对应关系的多列字段,必须设置依赖关系
性能因数据结构特殊,所以和其他两种构建方式无对比性
大数据量或者层级过多时性能一般常规情况下性能优于普通分层构建
其他无法自动过滤空节点支持不显示空节点无法自动过滤空节点

3. 自动构建示例编辑

将普通数据集转为 树数据集 后,下拉树控件可直接选择树数据集来自动构建树层级,树数据集必须要有明显的父子关系。如下图所示:

1656506289Cjae.png

构建树时,要注意数据不能存在环,否则构建树不成功,日志报错:树控件构建失败,原始标记字段数据间构成循环

3.1 准备数据

准备可以构建树数据集的表,例如本例使用的内置数据库 FRDemo 中的公司部门表。

注:可以构建树数据集的表要求请参见 树数据集的完整性检查 。

新建大屏报表,增加数据集 ds1,SQL 语句为:SELECT * FROM 公司部门。表结构如下图所示:

Snag_38941aaa.png

表分析:

  • 第一行表示总部的标记是 1,父标记为空,表示它是根部门,没有父部门,通常如果一个部门没有父部门,那么父部门标记为空。

  • 第二行的意思是「人力资源部」的原始标记为 11,其父部门是标记为 1 的部门(然后可以根据这个标记来查询它的父部门是总部)。

遍历这个数据集后,能得到所有的部门信息,职位信息;根据「上级 ID」,到「部门 ID」这一列去查找相应的部门名称,从而可以构建父部门。

需要注意的是:「上级 ID」中出现的标记(除了是空),都必须在「部门ID」中找到对应的标记,可以看到上图中所有的「上级 ID」都能在「部门 ID」中找到对应的值。

3.2 转为树数据集

新建树数据集 Tree,使用 ds1 来构建树,如下图所示:

Snag_38a0c4f9.png

3.3 设计下拉树控件

606A068F-FAD2-4B3C-BFCC-34B52AF9BACB.GIF

4. 普通分层构建示例编辑

普通分层构建需在数据字典定义界面给每一个层级分别绑定不同的数据集。其实就是 FR 中的动态 SQL,需要将每个 SQL 定义为一个报表数据集。

在普通分层构建中层次定义如下:

  • 层次 1:通过 数据字典 来定义下拉框的实际值与显示值。

  • 层次 2:根据层次 1 的数据进行过滤,需要定义成数据集,然后通过数据查询返回数据集定义的列。数据集定义成:SELECT 字段 FROM 表名 WHERE 层次 1 的字段 = '${layer1}'

注1:layer1 表示取层次 1 节点的值,若在层次 3 中调用,则是 SELECT 字段 FROM 表名 WHERE 层次 2 的字段 = '${layer2}' 依次类推,其中 layer1,layer2 等均是系统参数,均为固定写法,不可更改。

注2:layer 系列参数只可用于树构建,不支持用于参数过滤。

4.1 准备数据

新建大屏报表,新建 3 个数据集,SQL 语句分别如下:

ds1:SELECT 货主地区 FROM 订单 where 货主地区!='',查询出所有地区。

ds2:SELECT  货主省份 FROM 订单 where 货主省份!='' and 货主地区='${layer1}',根据第一层 layer1 的值查询出货主省份

ds3:SELECT  货主城市 FROM 订单 where 货主城市!='' and 货主地区 = '${layer1}'and 货主省份='${layer2}'根据前两层 layer1、layer2 的值查询出货主城市。

4.2 设计下拉树控件

1)向画布中添加下拉树控件,打开「数据字典」设置框,选择构建方式为「普通分层构建」,点击加号添加层次。如下图所示:

9B89CB89-D78D-4380-AC18-D57273F85C93.GIF

2)层次1、层次2、层次3 分别对应数据查询 ds1 、ds2 、ds3 的字段,需选中层次后分别设置。如下图所示:

A8004214-BACA-4E39-87D1-8729C9576968.GIF

5. 极速分层构建编辑

5.1 准备数据

新建大屏报表,新建数据集,SQL 语句为:SELECT 货主地区,货主省份,货主城市 FROM S订单 where 货主城市!='' 。表结构如下图所示:

Snag_39b5da04.png

5.2 设计下拉树控件

1)向画布中添加下拉树控件,打开「数据字典」设置框,构建方式默认为「极速分层构建」,点击加号添加层次。如下图所示:

55C65A2C-57CB-412D-88CC-40120667CF61.GIF

2)选择每层对应的值,并且设置相应的依赖层次和依赖字段,操作方式如下:

  • 层次1:

Snag_39bbcdc2.png

  • 层次2:

Snag_39bc6be7.png

  • 层次3:

Snag_39bc73e6.png