树形数据
表的树形关系,用来表示数据之间的上下级关系,也是业务经常用到的关联关系。
现实世界中,经常会遇到一些具有上下级关系的事物,比如行政区域(国家、省、市),通常会用“树”的形式来展现这种数据,如下图所示:
树形结构
最简单的树形数据,只需要 3 列就可以形成,即主键,父的主键和显示名称列。
同时,为了后续更方便地使用树形数据,有时还会使用比如全路径ID、全路径名称、是否叶子节点和层级等等这些列。
以区域为例,完整的树形数据结构和内容,如下图所示:
说明如下:
- 父主键列:树形数据一般是逐级加载的,首先显示出根,根就是父 ID 为空的数据。展开根,显示根的下级,就是加载父 ID =根的主键的数据。以此类推,通过不断的加载数据,展示出一整棵树。
- 全路径列:只有主键和父的主键的树形数据,被称为父子树,它的优点是支持无限多级,缺点是查找数据经常需要使用递归算法。而增加全路径列可以解决这个问题,即以路径的形式存储前面每一级的数据,如上图中的第4、5列。第4列存储的是前面各级的主键列的值,第5列存储的是前面各级的名称列的值。有了这些全路径列,就可以对树形数据进行各种各样的查找了。
- 层级列:作为树形数据,根节点的层级是1,根的下级节点的层级是2,以此类推,每一个节点都对应了一个层级,如上图中的层级列。
- 叶子节点列:末级节点称为叶子节点,可展开节点为非叶子节点,如上图中的是否叶子节点列。
树形设置
在数据集的高级页签,选中树形数据复选框,就表示设置该数据集为树形数据。同时还需要设置一下父列。
如果额外需要配置全路径 ID 列、层级列、叶子节点列、其它全路径列的话,点击配置按钮打开配置。
除了父列,其他列都是可选配置,可根据实际需要在表中添加对应的列,并进行配置。
在字段的数据维护方面,父 ID 需要自行维护,设置该条记录的父级记录是哪条;剩下的其他字段,平台会自行维护,比如自动生成全路径 ID 等。
树形使用
建好树形结构的数据集之后,就可以在页面中使用了。
数据展示
页面中引入树组件,再绑定相应的树形数据集,就可以展示树内容了。
展示效果如下:
属性编辑
树形数据集引入到页面后,默认会勾选上树形数据,说明该数据集使用树形结构。
如果不想使用树形结构,也可以手动取消,主要是用在一些关联查询的场景,因为树形数据是逐级查询出来的,避免树形数据查询不全的情况。
同时,还会多出一些跟树形相关的配置,比如是否加载全部树型数据,根过滤条件等。
分页数据大小默认是 20 条,如果某层的数据较多,需要额外设置一下该分页大小,避免显示数据不全。
数据请求说明
需要注意的是,树默认是按节点一级一级加载的,不是一次性加载出全部数据(避免如果数据库的数据太多,造成请求和加载过慢)。
树初始化时,会默认加载第一级,也就是父 ID 为空的数据列表,比如:
当展示某节点时,会使用 父 ID = 该节点的主键 进行过滤,获取到该节点的下级数据列表,比如:
如果不想逐级加载,并且数据库表的数据也不多,比如几十条、几百条这种量级,可以勾选加载全部树型数据,让数据一次访问回来。这样点击展示节点时,不会向后端再次发起数据请求。
从网络请求中可以了解,该数据集的数据全部一次返回了:
数据维护
数据集的数据菜单维护
切换到数据集的数据菜单,可以直接录入数据进行维护。除了名称,还需要录入父 ID,来标识上下级的关系。其他平台自动维护的字段,比如全路径字段,都不需要手动录入。
新增某条记录返回列表后,该记录的自动维护字段是默认不会显示值出来的,需要手动再刷新一下数据才能显示出来。
需要注意的是,如果使用导入 excel 来批量导入数据,是不会自动维护全路径等字段。
页面维护
如果用户需要在页面上维护树形数据,可以使用树形表单模板来快速生成维护页面。
在模板向导设置中,主要需要设置树的显示列以及父 ID。
维护页面生成后,即可在树上进行添加子级、添加同级、修改树节点内容、删除树节点等操作。这里进行维护,就不需要手动设置父 ID 了,因为在树上边操作,可以获取到对应的父 ID。同理,其他自动生成的列也不需要手动录入。
数据下拉选择
在某些使用场景,需要从树形数据中选择某些记录出来,这时候需要使用树选择组件来下拉展示数据。
绑定树形数据集后,使用效果如下: