logo

S2

  • 使用文档
  • API 文档
  • 图表示例
  • 在线体验
  • 更新日志
  • 所有产品antv logo arrow
  • 2.x
  • 简介
  • 快速上手
  • 基础教程
    • 基本概念
      Updated
    • 表形态
      • 透视表
        Updated
      • 明细表
        Updated
    • 字段标记
      Updated
    • 小计总计
    • 排序
      • 基础排序
        Updated
      • 组内排序
        Updated
    • 主题配置
      Updated
    • Tooltip
      Updated
    • 数据格式化
      New
    • 多行文本
      New
    • 国际化
    • 分页
      New
  • 进阶教程
    • 单元格渲染类型
      • 链接
      • 图片
        New
      • 视频
        New
      • 迷你图表
      • 结合@antv/g2
      • 自定义渲染
    • 自定义
      • 自定义 Hook
        Updated
      • 自定义行列头分组
        New
      • 自定义 Icon
        Updated
      • 自定义单元格对齐方式
        Updated
      • 自定义单元格宽高
        Updated
      • 自定义排序操作
        Updated
      • 自定义折叠/展开节点
        New
    • 交互
      • 基础交互
        Updated
      • 自定义交互
      • 隐藏列头
        Updated
      • 行列宽高调整
        Updated
      • 合并单元格
      • 滚动
        Updated
      • 复制与导出
        New
      • 高亮/选中单元格
        New
    • 分析组件
      • 简介
        New
      • 高级排序
        Updated
      • 维度切换
        Updated
      • 导出
        Updated
      • 分页
        Updated
      • 维度下钻
        Updated
    • 表格组件
      • 编辑表
      • 趋势分析表
        Updated
    • 高清适配
      Updated
    • 获取表格实例
    • 表格自适应
    • 获取单元格数据
      Updated
    • 注册 AntV/G 插件
      New
    • 透视组合图
      Experimental
    • Vue 3.0 组件 (停止维护)
  • 扩展阅读
    • 数据流处理
      • 透视表
      • 明细表
    • 布局流程
      • 透视表
      • 明细表
    • 性能介绍
      Updated
  • 贡献指南
  • 常见问题
  • S2 2.0 升级指南

明细表

上一篇
透视表
下一篇
透视表

Resources

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
xtech蚂蚁体验科技
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

本文会介绍明细表的数据流处理过程,让读者更直观的了解 S2 内部数据逻辑。明细表的数据处理流程相对透视表更简单,无需数据转化和映射流程,主要是针对筛选和排序,对数据做了预处理。

明细表

原始数据

初始配置和数据如下:

const dataCfg = {
fields: {
columns: ['city', 'type', 'sub_type', 'price'],
},
data: [
{
price: 1,
province: '浙江省',
city: '杭州市',
type: '家具',
sub_type: '桌子',
},
{
price: 2,
province: '浙江省',
city: '绍兴市',
type: '家具',
sub_type: '桌子',
},
{
price: 3,
province: '浙江省',
city: '杭州市',
type: '家具',
sub_type: '沙发',
},
{
price: 4,
province: '浙江省',
city: '绍兴市',
type: '家具',
sub_type: '沙发',
},
],
};
const options = {
width: 800,
height: 600
};
<SheetComponent
dataCfg={dataCfg}
options={options}
sheetType="table"
/>

排序、筛选并生成展示数据

如果用户配置了筛选和排序,S2 会对原始数据进行处理,从而生成经过筛选、排序后的展示数据。

比如用户配置了筛选:

// dataCfg
{
filterParams: [
{
filterKey: 'city',
customFilter: (row) => row['city'] === '杭州市',
}
]
}

这次 S2 会对 city 字段做筛选,只保留值为杭州市的记录:

过滤

[
{
price: 1,
province: '浙江省',
city: '杭州市',
type: '家具',
sub_type: '桌子',
},
{
price: 3,
province: '浙江省',
city: '杭州市',
type: '家具',
sub_type: '沙发',
},
]

如果用户配置了排序:

// dataCfg
{
sortParams: [
{
sortFieldId: 'price',
sortMethod: 'DESC'
}
]
}

S2 会对 price 字段做降序排序,数据最终变成了这样:

排序

[
{
price: 3,
province: '浙江省',
city: '杭州市',
type: '家具',
sub_type: '沙发',
},
{
price: 1,
province: '浙江省',
city: '杭州市',
type: '家具',
sub_type: '桌子',
},
]

获取数据

上述的数据,会被保存到 TableDataSet 中名为 displayData 的字段中。用户原来传入的原始数据并不会被修改。

我们可以通过 s2Instance.dataSet.displayData 获取。

同时可以可以通过 s2Instance.dataSet.getCellData({ rowIndex: number; field: string; }) API 来获取某个行列格子的数据。同样的,这里获取的是经过筛选和排序之后的展示数据。