Tabulator的getData()能否返回与屏幕展示顺序一致的行数据?
适配WYSIWYG导出需求的解决方案
针对分组/树形表格激活排序后getData('active')返回行顺序与渲染结果不一致的问题,可直接调用表格实例的渲染行获取接口,无需自行重算排序逻辑:
- 调用
table.getRenderedRows(true)获取全量已渲染行实例,入参true表示返回所有符合当前筛选、排序、分组、树形展开规则的行,不受滚动可视范围限制,返回的行顺序与屏幕展示完全一致 - 遍历行实例数组,逐行调用
getData()方法即可得到和屏幕展示顺序1:1匹配的原始数据数组,示例代码如下:
// 生成WYSIWYG格式的导出数据 const exportData = table.getRenderedRows(true).map(row => row.getData()) // 直接使用exportData生成XLSX文件即可
适用场景说明
- 同时兼容普通表格、groupBy分组表格、dataTree树形表格三类场景
- 自动同步当前表格已生效的所有筛选规则、自定义排序规则、分组折叠/展开状态、树形节点折叠/展开状态
- 无需感知表格列数、排序器类型,不需要额外实现排序计算逻辑
如果导出需要包含分组标题行,可额外调用table.getGroupHeaders()方法获取分组头部信息,按渲染顺序插入到导出数据对应位置即可。
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

