如何在页面中搭建树状表格|飞书低代码平台 - 飞书官网

如何在页面中搭建树状表格|飞书低代码平台

飞书

预期效果​
支持在同一个表格中展示父、子级数据,可以逐级展开来获取/查看下一级数据​
​
250px|700px|reset
​
​
搭建步骤​
目前通过引导式搭建已经可以一键生成树状表格,本文用于阐明树状表格逻辑细节及原理,用于参考学习​
Step1. 通过引导式搭建生成树状表格​
  • 搭建演示:​
​
250px|700px|reset
​
​
  • 注意:仅具备「层级关系」的对象支持生成树状表格​
​
250px|700px|reset
​
​
Step2. 查看生成的数据请求​
树状表格一般会生成 3 个主要的数据请求​
  1. 查询根层级的父级数据:getParent​
用于获取没有父级的根层级数据,此处通过「过滤条件」设置来实现这个逻辑​
  • 过滤条件:父客户 = 空​
​
250px|700px|reset
image.png
​
​
  1. 根据指定父数据查询其子级数据:getChildren​
用户在点击某一行父级数据时,查询其子级数据,此处通过「过滤条件」设置来实现这个逻辑。​
  • 过滤条件:父客户 = 当前想要展开的行​
  • { { table1.selectedRow._id } }​
​
250px|700px|reset
​
​
  1. 模糊搜索全部数据,不区分父子级(结果平铺展示):search​
用户在输入搜索框内容进行搜索时,通过此请求来获取搜索结果。​
​
250px|700px|reset
​
​
Step3. 查看生成的 JS Code、变量​
用户在展开子级后,通过此 JS 动作来自动组装父级、自己数据为一个完整的数据列表,用于整体提供给表格进行消费。​
  • JS Code 输出的结果会设值给一个自定义变量,表格则消费此变量来呈现数据。​
​
250px|700px|reset
image.png
​
​
代码内容​
​
const parentId = params.parentIdconst children = params.childrenfunction searchAndUpdate(parent) { if(parent._id === parentId) { parent.children = children; return true } else if (Array.isArray(parent.children) ) { for (let item of parent.children) { const find = searchAndUpdate(item) if(find) { return true; } } } return false;}const clonedData = JSON.parse(JSON.stringify(tableData.value))for(let item of clonedData) { const find = searchAndUpdate(item) if(find) break}tableData.setValue(clonedData))
​
Step4. 查看生成的变量​
会生成两个变量,其用户如下​
  • tableData:用于缓存 Step1-3 返回的数据结果,便于表格直接消费,而不用与多个请求进行关联​
  • currentItem:用于缓存点击展开的是哪一行,便于在表格展开按钮展示 Loading 状态时,精准的控制仅被点击的行会 Loading​
​
250px|700px|reset
image.png
​
​
Step5. 查看生成的表格配置​
表格会支持「树状表格」配置,此场景下​
  • 通过「展开行」事件,来触发 getChildren 获取下一级数据​
  • 通过打开「树状表格」开关,使得表格能够接受嵌套格式的树状数据​
  • 通过「展开按钮隐藏」,来控制没有下一级的数据行不要展示展开按钮;展开按钮加载同理​
​
250px|700px|reset
image.png
​
​
​
​
​
​
​
​
​
​
预约飞书企业效能顾问 深度诊断企业痛点,定制专属 AI 办公方案

字节跳动旗下 AI 工作平台

关联文章推荐

优质内容,精华实践

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题

字节跳动旗下 AI 工作平台

联系我们立即试用