Skip to content

树形表格(层级表)

1. 功能概述

1.1 什么是树形表格

树形表格(层级表)是表格视图的一种展示形态。通过在视图上指定一个自关联字段作为「父记录字段」,SmartTable 会依据记录之间的父子引用关系,把原本平铺的记录列表渲染成可展开、可折叠的树状层级结构。

与主从表的区别在于关系的作用范围:

对比项树形表格主从表
关系范围同一张表内部记录之间两张不同的表之间
依赖字段关联到本表的自关联字段关联到其他表的关联字段
展示位置表格视图中直接缩进展示详情抽屉内的子表区域
典型语义上下级、归属、分解主记录与明细行

1.2 应用场景

场景分类典型用法
任务分解项目 → 阶段 → 任务 → 子任务,构建 WBS 工作分解结构
组织架构公司 → 事业部 → 部门 → 小组
分类目录一级类目 → 二级类目 → 三级类目
知识体系学科 → 章节 → 知识点
地区层级省 → 市 → 区县
费用科目一级科目 → 明细科目

1.3 前置条件

条件说明
数据表已创建目标数据表并存在若干记录
自关联字段表中存在一个关联到本表的关联字段
关联类型该字段的关联类型必须为一对多
视图类型当前视图为表格视图
操作权限配置父记录字段需要编辑者及以上角色

2. 配置父记录字段

2.1 创建自关联字段

树形层级依赖一个「指向自己这张表」的关联字段。创建步骤:

  1. 在表格中点击列头右侧的「+」新建字段。

  2. 字段类型选择「关联记录」。

  3. 在「关联表」下拉中选择带有 (当前表) 标识的本表选项。

    选中当前表后,界面会出现蓝色提示:「关联自身表可用于在表格视图中设置记录层级」。

  4. 此时「关联类型」会被自动锁定为一对多且不可修改,这是层级结构的必要约束。

  5. 将字段命名为语义明确的名称,例如「父任务」「上级部门」「父级类目」。

  6. 点击「确定」保存。

2.2 开启树形展示

  1. 打开目标表格视图。

  2. 在工具栏上找到并点击「树形」按钮(齿轮图标)。

    该按钮仅在表中存在自关联字段时才会出现。若未看到,请先按 2.1 创建自关联字段。

  3. 在弹出面板的「父记录字段」下拉中,选择刚创建的自关联字段。

  4. 选择后视图立即切换为树形展示,面板提示变为「已启用树形层级展示,可右键点击记录添加子记录」。

配置结果保存在视图上(字段 parent_field_id),因此同一张表的不同视图可以各自决定是否开启树形展示,互不影响。

树形表格配置与效果

2.3 关闭树形展示

在「树形」面板中清空「父记录字段」下拉框的选项即可恢复为普通平铺列表。此操作只改变展示形态,不会删除任何记录数据或字段值

若作为父记录字段的关联字段被删除,视图的树形配置会自动解除,视图恢复为平铺展示,记录数据不受影响。

3. 层级操作

3.1 展开与折叠

开启树形后,含有子记录的行会在首列显示展开箭头:

  • 点击箭头展开下一层子记录。
  • 再次点击折叠。
  • 子记录按层级依次缩进,直观体现从属关系。

3.2 添加子记录

在任意记录上点击右键,选择「添加子记录」:

  • 系统会在该记录下创建一条新的子记录。
  • 父子关联关系自动写入,无需手动到关联字段中挂接。
  • 创建成功后提示「子记录已创建」。

3.3 提升层级

右键菜单中的「提升层级」用于把当前记录向上提一级,使其与原父记录变为同级。适用于任务拆分粒度调整、部门重组等场景。

3.4 手动指定父记录

除右键菜单外,也可以直接编辑记录的父记录字段:点击该单元格,从关联记录列表中选择一条作为父级。

选择父记录时,列表中不会出现当前记录自身,以避免形成「自己是自己父级」的循环引用。

4. 使用建议

4.1 层级深度控制

建议将层级深度控制在 3~5 层以内。层级过深会导致:

  • 表格横向缩进占用过多空间,正文列可视区域被压缩。
  • 逐层展开的操作成本上升,定位目标记录变慢。

对于确实很深的业务结构,建议拆分为「主表 + 主从表」的组合方式表达。

4.2 与筛选、排序的关系

树形展示依赖记录之间的父子引用完整性。当视图配置了筛选条件时,若父记录被筛掉而子记录保留,层级链条会断裂,这些子记录将以独立节点的形式呈现。建议:

  • 树形视图中尽量使用宽松的筛选条件。
  • 需要精确筛选时,可另建一个不开启树形的平铺视图专门用于查询。

4.3 命名规范

父记录字段建议采用「父 + 业务对象」或「上级 + 业务对象」的命名方式,例如「父任务」「上级部门」,便于团队成员理解字段用途。

5. 常见问题

Q1:工具栏上没有「树形」按钮?

该按钮只在表中存在自关联字段时显示。请先按 2.1 创建一个关联到当前表的关联字段。

Q2:为什么关联类型不能改成一对一或多对多?

层级结构要求每条记录最多只有一个父级、可以有多个子级,这正是「一对多」的语义。因此选择当前表作为关联表后,系统会强制锁定为一对多。

Q3:展开箭头不显示怎么办?

请确认该记录确实存在子记录(即有其他记录的父字段指向它)。若数据无误仍不显示,尝试刷新页面重新加载视图数据。

Q4:同一张表能否同时使用树形表格和主从表?

可以。两者依赖不同的字段:树形依赖自关联字段,主从表依赖指向其他表的关联字段,互不冲突。

Q5:删除父记录后子记录会被一起删除吗?

不会。子记录会保留,仅失去父级引用,在树形视图中回到顶层展示。

6. 相关文档

Released under the MIT License.