Table 表格

展示行列数据。

何时使用

  • 当有大量结构化的数据需要展现时;
  • 当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。

如何使用

指定表格的数据源 dataSource 为一个数组。

代码演示

Name
Gender
Email
Lyudomil Shepelyuk malelyudomil.shepelyuk@example.com
Bertram Johansen malebertram.johansen@example.com
Sami Løken malesami.loken@example.com
Hilda Lucas femalehilda.lucas@example.com
José Sanz malejose.sanz@example.com
Ronith Anand maleronith.anand@example.com
Katalina Mandić femalekatalina.mandic@example.com
الینا کریمی femalelyn.khrymy@example.com
Jenny Simmons femalejenny.simmons@example.com
Stanislaw Ashraf malestanislaw.ashraf@example.com

远程加载数据

这个例子通过简单的 ajax 读取方式,演示了如何从服务端读取并展现数据,具有筛选、排序等功能以及页面 loading 效果。开发者可以自行接入其他数据处理方式。
另外,本例也展示了筛选排序功能如何交给服务端实现,列不需要指定具体的 onFiltersorter 函数,而是在把筛选和排序的参数发到服务端来处理。
注意,此示例使用 模拟接口,展示数据可能不准确,请打开网络面板查看请求。

expand code expand code
Name
Age
Address
Tags
Action
John Brown32New York No. 1 Lake Park
nice
developer
Invite 一 John Brown
Delete
More actions
Jim Green42London No. 1 Lake Park
loser
Invite 一 Jim Green
Delete
More actions
Joe Black32Sidney No. 1 Lake Park
cool
teacher
Invite 一 Joe Black
Delete
More actions

基本用法

简单的表格,最后一列是各种操作。

expand code expand code
Name
Age
Home phone
Address
John Brown320571-2209890918889898989New York No. 1 Lake Park
Jim Green420571-2209833318889898888London No. 1 Lake Park
Joe Black320575-2209890918900010002Sidney No. 1 Lake Park
Jim Red1818900010002London No. 2 Lake Park
Jake White

表格行/列合并

表头只支持列合并,使用 column 里的 colSpan 进行设置。
表格支持行/列合并,使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为 0 时,设置的表格不会渲染。

expand code expand code
Name
Age
Address
John Brown32New York No. 1 Lake Park
Joe Black42London No. 1 Lake Park
Jim Green32Sidney No. 1 Lake Park
Jim Red32London No. 2 Lake Park

自定义筛选菜单

通过 filterDropdown 定义自定义的列筛选功能,并实现一个搜索列的示例。

expand code expand code
name
age
address
operation
Edward King 0
32London, Park Lane no. 0Delete
Edward King 1
32London, Park Lane no. 1Delete

可编辑单元格

带单元格编辑功能的表格。

expand code expand code
name
age
address
operation
Edrward 0
32
London Park no. 0
Edrward 1
32
London Park no. 1
Edrward 2
32
London Park no. 2
Edrward 3
32
London Park no. 3
Edrward 4
32
London Park no. 4
Edrward 5
32
London Park no. 5
Edrward 6
32
London Park no. 6
Edrward 7
32
London Park no. 7
Edrward 8
32
London Park no. 8
Edrward 9
32
London Park no. 9

可编辑行

带行编辑功能的表格。

expand code expand code
Name
Age
Address
John Brown sr.60New York No. 1 Lake Park
Joe Black32Sidney No. 1 Lake Park

树形数据展示

表格支持树形数据的展示,当数据中有 children 字段时会自动展示为树形表格,如果不需要或配置为其他字段可以用 childrenColumnName 进行配置。
可以通过设置 indentSize 以控制每一层的缩进宽度。

注:暂不支持父子数据递归关联选择。

expand code expand code
Name
Age
Address
Action
John Brown32New York No. 1 Lake ParkDelete
Jim Green42London No. 1 Lake ParkDelete
Joe Black32Sidney No. 1 Lake ParkDelete

可展开

当表格内容较多不能一次性完全展示时。

expand code expand code
Full Name
Age
Column 1
Column 2
Column 3
Column 4
Column 5
Column 6
Column 7
Column 8
Action
Edrward 032London Park no. 0London Park no. 0London Park no. 0London Park no. 0London Park no. 0London Park no. 0London Park no. 0London Park no. 0action
Edrward 132London Park no. 1London Park no. 1London Park no. 1London Park no. 1London Park no. 1London Park no. 1London Park no. 1London Park no. 1action
Edrward 232London Park no. 2London Park no. 2London Park no. 2London Park no. 2London Park no. 2London Park no. 2London Park no. 2London Park no. 2action
Edrward 332London Park no. 3London Park no. 3London Park no. 3London Park no. 3London Park no. 3London Park no. 3London Park no. 3London Park no. 3action
Edrward 432London Park no. 4London Park no. 4London Park no. 4London Park no. 4London Park no. 4London Park no. 4London Park no. 4London Park no. 4action
Edrward 532London Park no. 5London Park no. 5London Park no. 5London Park no. 5London Park no. 5London Park no. 5London Park no. 5London Park no. 5action
Edrward 632London Park no. 6London Park no. 6London Park no. 6London Park no. 6London Park no. 6London Park no. 6London Park no. 6London Park no. 6action
Edrward 732London Park no. 7London Park no. 7London Park no. 7London Park no. 7London Park no. 7London Park no. 7London Park no. 7London Park no. 7action
Edrward 832London Park no. 8London Park no. 8London Park no. 8London Park no. 8London Park no. 8London Park no. 8London Park no. 8London Park no. 8action
Edrward 932London Park no. 9London Park no. 9London Park no. 9London Park no. 9London Park no. 9London Park no. 9London Park no. 9London Park no. 9action
Full Name
Age
Edrward 032
Edrward 132
Edrward 232
Edrward 332
Edrward 432
Edrward 532
Edrward 632
Edrward 732
Edrward 832
Edrward 932

固定头和列

适合同时展示有大量数据和数据列。

若列头与内容不对齐或出现列重复,请指定列的宽度 width
建议指定 scroll.x 为大于表格宽度的固定值或百分比。注意,且非固定列宽度之和不要超过 scroll.x

expand code expand code
Full Name
Age
Column 1
Column 2
Column 3
Column 4
Column 5
Column 6
Column 7
Column 8
Action
John Brown32New York ParkNew York ParkNew York ParkNew York ParkNew York ParkNew York ParkNew York ParkNew York Parkaction
Jim Green40London ParkLondon ParkLondon ParkLondon ParkLondon ParkLondon ParkLondon ParkLondon Parkaction
Full Name
Age
John Brown32
Jim Green40

固定列

对于列数很多的数据,可以固定前后的列,横向滚动查看其它数据,需要和 scroll.x 配合使用。

若列头与内容不对齐或出现列重复,请指定列的宽度 width
建议指定 scroll.x 为大于表格宽度的固定值或百分比。注意,且非固定列宽度之和不要超过 scroll.x

expand code expand code
Name
Age
Address
Edward King 032London, Park Lane no. 0
Edward King 132London, Park Lane no. 1
Edward King 232London, Park Lane no. 2
Edward King 332London, Park Lane no. 3
Edward King 432London, Park Lane no. 4
Edward King 532London, Park Lane no. 5
Edward King 632London, Park Lane no. 6
Edward King 732London, Park Lane no. 7
Edward King 832London, Park Lane no. 8
Edward King 932London, Park Lane no. 9
Edward King 1032London, Park Lane no. 10
Edward King 1132London, Park Lane no. 11
Edward King 1232London, Park Lane no. 12
Edward King 1332London, Park Lane no. 13
Edward King 1432London, Park Lane no. 14
Edward King 1532London, Park Lane no. 15
Edward King 1632London, Park Lane no. 16
Edward King 1732London, Park Lane no. 17
Edward King 1832London, Park Lane no. 18
Edward King 1932London, Park Lane no. 19
Edward King 2032London, Park Lane no. 20
Edward King 2132London, Park Lane no. 21
Edward King 2232London, Park Lane no. 22
Edward King 2332London, Park Lane no. 23
Edward King 2432London, Park Lane no. 24
Edward King 2532London, Park Lane no. 25
Edward King 2632London, Park Lane no. 26
Edward King 2732London, Park Lane no. 27
Edward King 2832London, Park Lane no. 28
Edward King 2932London, Park Lane no. 29
Edward King 3032London, Park Lane no. 30
Edward King 3132London, Park Lane no. 31
Edward King 3232London, Park Lane no. 32
Edward King 3332London, Park Lane no. 33
Edward King 3432London, Park Lane no. 34
Edward King 3532London, Park Lane no. 35
Edward King 3632London, Park Lane no. 36
Edward King 3732London, Park Lane no. 37
Edward King 3832London, Park Lane no. 38
Edward King 3932London, Park Lane no. 39
Edward King 4032London, Park Lane no. 40
Edward King 4132London, Park Lane no. 41
Edward King 4232London, Park Lane no. 42
Edward King 4332London, Park Lane no. 43
Edward King 4432London, Park Lane no. 44
Edward King 4532London, Park Lane no. 45
Edward King 4632London, Park Lane no. 46
Edward King 4732London, Park Lane no. 47
Edward King 4832London, Park Lane no. 48
Edward King 4932London, Park Lane no. 49

固定表头

方便一页内展示大量数据。
需要指定 column 的 width 属性,否则列头和内容可能不对齐。

expand code expand code
Name
Other
Company
Gender
Age
Address
Company Address
Company Name
Street
Block
Building
Door No.
John Brown1Lake ParkC2035Lake Street 42SoftLake CoM
John Brown2Lake ParkC2035Lake Street 42SoftLake CoM
John Brown3Lake ParkC2035Lake Street 42SoftLake CoM
John Brown4Lake ParkC2035Lake Street 42SoftLake CoM
John Brown5Lake ParkC2035Lake Street 42SoftLake CoM
John Brown6Lake ParkC2035Lake Street 42SoftLake CoM
John Brown7Lake ParkC2035Lake Street 42SoftLake CoM
John Brown8Lake ParkC2035Lake Street 42SoftLake CoM
John Brown9Lake ParkC2035Lake Street 42SoftLake CoM
John Brown10Lake ParkC2035Lake Street 42SoftLake CoM
Name
John Brown
John Brown
John Brown
John Brown
John Brown
John Brown
John Brown
John Brown
John Brown
John Brown
Gender
M
M
M
M
M
M
M
M
M
M

表头分组

columns[n] 可以内嵌 children,以渲染分组表头。

expand code expand code
Name
Age
Address
John Brown32New York No. 1 Lake Park
Jim Green42London No. 1 Lake Park
Joe Black32Sidney No. 1 Lake Park
Jim Red32London No. 2 Lake Park

筛选和排序

对某一列数据进行筛选,使用列的 filters 属性来指定需要筛选菜单的列,onFilter 用于筛选当前数据,filterMultiple 用于指定多选和单选。
对某一列数据进行排序,通过指定列的 sorter 函数即可启动排序按钮。sorter: function(rowA, rowB) { ... }, rowA、rowB 为比较的两个行数据。
使用 defaultSortOrder 属性,设置列的默认排序顺序。

expand code expand code
Name
Platform
Version
Upgraded
Creator
Date
Action
ScreemiOS10.3.4.5654500Jack2014-12-24 23:12:00Publish
ScreemiOS10.3.4.5654500Jack2014-12-24 23:12:00Publish
ScreemiOS10.3.4.5654500Jack2014-12-24 23:12:00Publish

嵌套子表格

展示每行数据更详细的信息。

expand code expand code
Name
Age
Address
John Brown32New York No. 1 Lake Park
Jim Green42London No. 1 Lake Park
Joe Black32Sidney No. 1 Lake Park
Jim Red32London No. 2 Lake Park

可控的筛选和排序

使用受控属性对筛选和排序状态进行控制。

  1. columns 中定义了 filteredValue 和 sortOrder 属性即视为受控模式。
  2. 只支持同时对一列进行排序,请保证只有一列的 sortOrder 属性是生效的。
  3. 务必指定 column.key
expand code expand code
isCheckHightlight
Name
Age
Address
Edward King 032London, Park Lane no. 0
Edward King 132London, Park Lane no. 1
Edward King 232London, Park Lane no. 2
Edward King 332London, Park Lane no. 3
Edward King 432London, Park Lane no. 4
Edward King 532London, Park Lane no. 5
Edward King 632London, Park Lane no. 6
Edward King 732London, Park Lane no. 7
Edward King 832London, Park Lane no. 8
Edward King 932London, Park Lane no. 9

选择和操作

选择后进行操作,完成后清空选择,通过 rowSelection.selectedRowKeys 来控制选中项。

expand code expand code
Name
Age
Address
Edward King 032London, Park Lane no. 0
Edward King 132London, Park Lane no. 1
Edward King 232London, Park Lane no. 2
Edward King 332London, Park Lane no. 3
Edward King 432London, Park Lane no. 4
Edward King 532London, Park Lane no. 5
Edward King 632London, Park Lane no. 6
Edward King 732London, Park Lane no. 7
Edward King 832London, Park Lane no. 8
Edward King 932London, Park Lane no. 9

自定义选择项

通过 rowSelection.selections 自定义选择项,默认不显示下拉选项,设为 true 时显示默认选择项。

expand code expand code
Name
Age
Address
John Brown32New York No. 1 Lake Park
Jim Green42London No. 1 Lake Park
Joe Black32Sidney No. 1 Lake Park
Disabled User99Sidney No. 1 Lake Park

可选择

第一列是联动的选择框。

默认点击 checkbox 触发选择行为

expand code expand code

Middle size table

Name
Age
Address
John Brown32New York No. 1 Lake Park
Jim Green42London No. 1 Lake Park
Joe Black32Sidney No. 1 Lake Park

Small size table

Name
Age
Address
John Brown32New York No. 1 Lake Park
Jim Green42London No. 1 Lake Park
Joe Black32Sidney No. 1 Lake Park

XSmall size table

Name
Age
Address
John Brown32New York No. 1 Lake Park
Jim Green42London No. 1 Lake Park
Joe Black32Sidney No. 1 Lake Park

XXSmall size table

Name
Age
Address
John Brown32New York No. 1 Lake Park
Jim Green42London No. 1 Lake Park
Joe Black32Sidney No. 1 Lake Park

紧凑型

四种紧凑型的列表,小型列表只用于对话框内。

expand code expand code
Name
Age
Address
Tags
Action
First Name
Last Name
JohnBrown32New York No. 1 Lake Park
nice
developer
Action 一 John
Delete
JimGreen42London No. 1 Lake Park
loser
Action 一 Jim
Delete
JoeBlack32Sidney No. 1 Lake Park
cool
teacher
Action 一 Joe
Delete

template 风格的 API

使用 template 风格的 API

这个只是一个描述 columns 的语法糖,所以你不能用其他组件去包裹 ColumnColumnGroup

expand code expand code
const dataSource = [{
  key: '1',
  name: '胡彦斌',
  age: 32,
  address: '西湖区湖底公园1号'
}, {
  key: '2',
  name: '胡彦祖',
  age: 42,
  address: '西湖区湖底公园1号'
}];

const columns = [{
  title: '姓名',
  dataIndex: 'name',
  key: 'name',
}, {
  title: '年龄',
  dataIndex: 'age',
  key: 'age',
}, {
  title: '住址',
  dataIndex: 'address',
  key: 'address',
}];

<Table dataSource={dataSource} columns={columns} />

API

Table

参数 说明 类型 默认值
bordered 是否展示外边框和列边框 boolean false
draggable 列是否可以拖动 boolean false
zebra 是否现实斑马线 boolean false
childrenColumnName 指定树形结构的列名 string[] children
columns 表格列的配置描述,具体项见下表 array -
components 覆盖默认的 table 元素 object -
dataSource 数据数组 any[]
defaultExpandAllRows 初始时,是否展开所有行 boolean false
defaultExpandedRowKeys 默认展开的行 string[] -
expandedRowKeys 展开的行,控制属性 string[] -
expandedRowRender 额外的展开行 Function(record, index, indent, expanded):VNode | slot="expandedRowRender" slot-scope="record, index, indent, expanded" -
expandIcon 自定义展开图标 Function(props):VNode | slot="expandIcon" slot-scope="props" -
expandRowByClick 通过点击行来展开子行 boolean false
footer 表格尾部 Function(currentPageData)|slot-scope
indentSize 展示树形数据时,每层缩进的宽度,以 px 为单位 number 15
loading 页面是否加载中 boolean|object false
locale 默认文案设置,目前包括排序、过滤、空数据文案 object filterConfirm: '确定'
filterReset: '重置'
emptyText: '暂无数据'

pagination 分页器,参考配置项pagination,设为 false 时不展示和进行分页 object
rowClassName 表格行的类名 Function(record, index):string -
rowKey 表格行 key 的取值,可以是字符串或一个函数 string|Function(record):string 'key'
rowSelection 列表项是否可选择,配置项 object null
scroll 设置横向或纵向滚动,也可用于指定滚动区域的宽和高,建议为 x 设置一个数字,如果要设置为 true,需要配合样式 .ant-table td { white-space: nowrap; } { x: number | true, y: number } -
showHeader 是否显示表头 boolean true
size table 尺寸 default | middle | small | xsmall| xxsmall default
title 表格标题 Function(currentPageData)|slot-scope
customHeaderRow 设置头部行属性 Function(column, index) -
customRow 设置行属性 Function(record, index) -

事件

事件名称 说明 回调参数
expandedRowsChange 展开的行变化时触发 Function(expandedRows)
change 分页、排序、筛选变化时触发 Function(pagination, filters, sorter)
expand 点击展开图标时触发 Function(expanded, record)

customRow 用法

适用于 customRow customHeaderRow customCell customHeaderCell
遵循Vue jsx语法。

<Table
  customRow={(record) => {
    return {
      props: {
        xxx... //属性
      },
      on: { // 事件
        click: () => {},       // 点击行
        mouseenter: () => {},  // 鼠标移入行
        xxxx...
      },

    };
  )}
  customHeaderRow={(column) => {
    return {
      on: {
        click: () => {},        // 点击表头行
      }
    };
  )}
/>

Column

列描述数据对象,是 columns 中的一项,Column 使用相同的 API。

参数 说明 类型 默认值
align 设置列内容的对齐方式 'left' | 'right' | 'center' 'left'
colSpan 表头列合并,设置为 0 时,不渲染 number
dataIndex 列数据在数据项中对应的 key,支持 a.b.c 的嵌套写法 string -
filterDropdown 可以自定义筛选菜单,此函数只负责渲染图层,需要自行编写各种交互 VNode | slot-scope -
filterDropdownVisible 用于控制自定义筛选菜单是否可见 boolean -
filtered 标识数据是否经过过滤,筛选图标会高亮 boolean false
filteredValue 筛选的受控属性,外界可用此控制列的筛选状态,值为已筛选的 value 数组 string[] -
filterIcon 自定义 fiter 图标。 VNode | (filtered: boolean, column: Column) => vNode |slot |slot-scope false
filterMultiple 是否多选 boolean true
filters 表头的筛选菜单项 object[] -
fixed 列是否固定,可选 true(等效于 left) 'left' 'right' boolean|string false
key Vue 需要的 key,如果已经设置了唯一的 dataIndex,可以忽略这个属性 string -
customRender 生成复杂数据的渲染函数,参数分别为当前行的值,当前行数据,行索引,@return里面可以设置表格行/列合并,可参考demo 表格行/列合并 Function(text, record, index) {}|slot-scope -
sorter 排序函数,本地排序使用一个函数(参考 Array.sort 的 compareFunction),需要服务端排序可设为 true Function|boolean -
sortOrder 排序的受控属性,外界可用此控制列的排序,可设置为 'ascend' 'descend' false boolean|string -
title 列头显示文字 string|slot -
width 列宽度 string|number -
customCell 设置单元格属性 Function(record, rowIndex) -
customHeaderCell 设置头部单元格属性 Function(column) -
onFilter 本地模式下,确定筛选的运行函数, 使用template或jsx时作为filter事件使用 Function -
onFilterDropdownVisibleChange 自定义筛选菜单可见变化时调用,使用template或jsx时作为filterDropdownVisibleChange事件使用 function(visible) {} -
slots 使用columns时,可以通过该属性配置支持slot的属性,如 slots: { filterIcon: 'XXX'} object -
scopedSlots 使用columns时,可以通过该属性配置支持slot-scope的属性,如 scopedSlots: { customRender: 'XXX'} object -

ColumnGroup

参数 说明 类型 默认值
title 列头显示文字 string|slot -
slots 使用columns时,可以通过该属性配置支持slot的属性,如 slots: { title: 'XXX'} object -

pagination

分页的配置项。

参数 说明 类型 默认值
position 指定分页显示的位置 'top' | 'bottom' | 'both' 'bottom'

更多配置项,请查看 Pagination

rowSelection

选择功能的配置。

参数 说明 类型 默认值
columnWidth 自定义列表选择框宽度 string|number -
columnTitle 自定义列表选择框标题 string|VNode -
fixed 把选择框列固定在左边 boolean -
getCheckboxProps 选择框的默认属性配置 Function(record) -
hideDefaultSelections 去掉『全选』『反选』两个默认选项 boolean false
selectedRowKeys 指定选中项的 key 数组,需要和 onChange 进行配合 string[] []
selections 自定义选择配置项, 设为 true 时使用默认选择项 object[]|boolean true
type 多选/单选,checkbox or radio string checkbox
onChange 选中项发生变化时的回调 Function(selectedRowKeys, selectedRows) -
onSelect 用户手动选择/取消选择某列的回调 Function(record, selected, selectedRows, nativeEvent) -
onSelectAll 用户手动选择/取消选择所有列的回调 Function(selected, selectedRows, changeRows) -
onSelectInvert 用户手动选择反选的回调 Function(selectedRows) -

selection

自定义选择配置项

参数 说明 类型 默认值
key Vue 需要的 key,建议设置 string -
text 选择项显示的文字 string|VNode -
onSelect 选择项点击回调 Function(changeableRowKeys) -

注意

在 Table 中,dataSourcecolumns 里的数据值都需要指定 key 值。对于 dataSource 默认将每列数据的 key 属性作为唯一的标识。

如果你的数据没有这个属性,务必使用 rowKey 来指定数据列的主键。若没有指定,控制台会出现缺少key的提示,表格组件也会出现各类奇怪的错误。

// 比如你的数据主键是 uid
return <Table rowKey="uid" />;
// 或
return <Table rowKey={record => record.uid} />;
  Popover 气泡卡片Tabs 标签页