Skip to content

Table 表格

基于 Element Plus Table 增强的表格组件。

以类似格式展示多条数据。你可以在表格中对数据进行排序、筛选、对比等操作。

基本用法

通过原始数据和列配置实现基础表格展示。

在每一个 Table 组件中,需要使用 raw-data 提供表格数据,使用 bk-table-column 组件定义表格结构,也可通过 items 属性以配置化方式定义表格结构。每列支持配置 proplabel 及相关字段属性等选项。

斑马纹表格

斑马纹表格更容易区分不同行数据。

stripe 属性接受布尔值,设置为 true 时表格将显示斑马纹效果。

带边框的表格

默认情况下表格无垂直边框,如需显示可将 border 属性设置为 true

带状态的表格

你可以通过高亮表格内容来区分「成功、信息、警告、危险」等状态。

使用 bk-tablerow-class-name 为指定行添加自定义类名,然后通过自定义类名实现样式高亮。

内容溢出时显示 tooltip

当单元格内容过长时会自动换行,你可以使用 show-overflow-tooltip 使其单行显示并在溢出时展示 tooltip。

show-overflow-tooltip 属性接受布尔值,设置为 true 时,鼠标悬浮在单元格上会通过 tooltip 显示完整内容。

固定表头

当表格行数过多时,可固定表头方便查看。

只需为 bk-table 设置 height 属性,即可固定表头,无需额外代码。

固定列

当表格列数过多时,可固定指定列在左侧/右侧。

固定列需要使用 fixed 属性,它接受 Boolean 值。 如果为 true, 列将被左侧固定. 它还接受传入字符串,leftright,表示左边固定还是右边固定。

固定列和表头

当表格数据量极大时,可同时固定表头和指定列。

结合上述两个示例,同时固定表头和列。

流体高度表格(固定表头/列)

当数据动态变化时,你可能希望表格有最大高度限制,超出时显示滚动条而非固定高度。

bk-table 设置 max-height 属性,表头将固定,仅当行高总和超过最大高度时,表格主体才会出现滚动条。

表头分组

数据结构比较复杂的时候,可使用多级表头来展现数据的层次关系。

只需要将表格列放置于表格列中,你可以实现组头。

单选

支持单行选中功能。

表格支持单行选中,添加 highlight-current-row 属性即可激活。选中行变化时会触发 current-change 事件,参数为变化后的当前行 currentRow 和变化前的行 oldCurrentRow。如需显示行索引,只需为表格列配置 type 属性值为 index 的列配置,索引将从 1 开始显示。

多选

支持多行选择,包含默认选中、禁用指定行选择等功能。

通过 default-selection 设置初始选中行(设为 true 选中所有行,或传入行 ID 数组);通过 disabled-selection 禁用指定行选择(设为 true 禁用所有行,或传入行 ID 数组)。注意:使用这些功能时必须设置 row-key 属性。

toggleRowSelection 方法支持第三个参数 ignoreSelectable,用于控制是否忽略行的可选状态。

激活多选功能只需为表格列配置 type 属性为 selection 即可。

排序

对数据进行排序,快速查找或对比数据。

为指定列设置 sortable 属性可基于该列排序,接受布尔值(默认 false)。设置表格的 default-sort 属性可指定默认排序列和排序方式。如需自定义排序规则,可使用 sort-methodsort-by。若需后端远程排序,将 sortable 设置为 custom,并监听表格的 sort-change 事件,在事件处理函数中获取排序列和排序方式,从接口获取排序后的数据。本示例中还使用了 formatter 属性格式化列值,该属性接受一个函数,参数为 row(行数据)和 column(列配置),可按需处理。

筛选

筛选表格数据,快速找到目标内容。

为表格列配置 filtersfilter-method 属性可启用列筛选功能。filters 为筛选选项数组,filter-method 为筛选方法,参数为 value(筛选值)、row(行数据)、column(列配置),用于判断行是否显示。

或者为 bk-table 设置 show-search 属性可启用筛选功能 @columns

Column

自定义列模板

自定义表格列内容,支持集成其他组件。

通过 插槽 可访问以下数据:row(行数据)、column(列配置)、$index(行索引)、store(表格状态管理)。

自定义表头

自定义表头样式,实现更个性化的展示。

通过表头 Slot 自定义表头展示形式。

可展开行

当行内容过长且不想显示水平滚动条时,可使用可展开行功能。

新增 preserve-expanded-content 属性,用于控制折叠时是否保留展开行内容在 DOM 中。

为表格列配置 type 属性为expand即可启用展开行功能,展开行可访问的属性与使用自定义列模板时的 slot 相同。

switch parent border:
switch child border:
preserve expanded:

树形数据与懒加载

支持展示树形结构数据。当行数据包含 children 字段时,将被视为嵌套数据;渲染嵌套数据时必须设置 row-key 属性。子行数据也可异步加载:将表格的 lazy 属性设为 true,并配置 load 方法;通过行数据的 hasChildren 属性标记是否包含子行(childrenhasChildren 均可通过 tree-props 配置)。

可选择的树形表格

treeProps.checkStrictlytrue 时,父子节点的选中状态不再关联(父节点选中时子节点不会被选中);当 treeProps.checkStrictlyfalse 时,父子节点选中状态关联(父节点选中时所有子节点均被选中)。

合计行

针对数值型表格,可在表格底部添加合计行,展示每列的求和结果。

设置 show-summarytrue 即可显示合计行。默认情况下,合计行第一列显示「合计」(可通过 sum-text 配置显示文本),其余列显示对应列的数值总和。你也可以通过 summary-method 自定义合计逻辑:该方法返回一个数组,数组每个元素将作为合计行对应列的内容(支持 VNode 或字符串)。本示例的第二个表格展示了自定义合计的详细用法。

合并单元格

配置 rowspan 和 colspan 实现单元格合并。

使用 span-method 属性配置合并规则,该属性接受一个方法,参数为包含 row(当前行)、column(当前列)、rowIndex(当前行索引)、columnIndex(当前列索引)的对象;方法需返回一个包含两个数字的数组(第一个为 rowspan,第二个为 colspan),或返回包含 rowspancolspan 属性的对象。

也可使用 merge-columns 属性,自动合并指定列中值相同的单元格。

自定义索引

自定义 type=index 列的行索引展示规则。

为列配置 type: "index" 并设置 index 属性即可自定义索引:若为数字,所有索引将偏移该数值;若为函数(参数为原始索引,从 0 开始),返回值将作为显示的索引。

表格布局

table-layout 属性用于设置表格单元格、行、列的布局算法。

Tooltip 格式化器

使用 tooltip-formatter 自定义 tooltip 内容。

工具栏

自定义表格工具栏,包含操作按钮。

使用 show-refreshshow-export 属性显示内置操作按钮,或通过 toolbar-left 插槽完全自定义工具栏内容;监听 refreshexport 事件处理用户操作。

分页

内置分页功能,适配大数据集展示。

设置 paginationtrue 启用基础分页,或传入配置对象自定义分页行为。

Total 50
  • 1
  • 2
  • 3
  • 4
  • 5
Go to

数字格式化 @columns

自动格式化表格单元格中的数值。

启用 number-format 可自动为数字添加千分位分隔符和指定小数位数(基于 formatNumber 实现)。

编辑数据 @columns

表格组件支持数据编辑,包含自定义编辑模式和编辑位置。

设置 enable-edittrue 启用编辑功能;通过 edit-mode 配置编辑模式(默认:'dialog' 对话框),edit-position 配置编辑位置(默认:'outside' 外部);每列可通过 edit 属性配置是否启用编辑。

Edit Mode
Edit Position

Table API

Table 属性

属性名说明类型默认值
raw-data表格数据源array[]
columns列配置项array[]
merge-columns需要合并的列名数组array[]
show-search @columns是否显示搜索功能booleanfalse
search-value默认搜索值string''
search-columns默认选中的搜索列array[]
show-refresh是否显示刷新按钮booleanfalse
show-export是否显示导出按钮booleanfalse
pagination是否启用分页boolean | objectfalse
number-format是否启用数字格式化boolean | objectfalse
edit-mode编辑模式(对话框/抽屉)enum'dialog'
edit-position编辑位置(外部/行内)enum'outside'
enable-edit @columns是否启用编辑功能booleanfalse
show-add是否显示新增按钮booleantrue
show-batch是否显示批量操作按钮booleanfalse
show-edit是否显示编辑按钮booleantrue
show-delete是否显示删除按钮booleantrue
Element Plus Table 原生属性
属性名说明类型默认值
data表格数据array[]
height表格高度。默认自动高度;若为数字,单位为像素;若为字符串,直接赋值给 style.height,高度受外部样式影响string / number
max-height表格最大高度,合法值为数字或带 px 单位的高度字符串string / number
stripe是否为斑马纹表格booleanfalse
border是否带有纵向边框booleanfalse
size表格尺寸enum
fit列的宽度是否自适配容器booleantrue
show-header是否显示表头booleantrue
highlight-current-row是否高亮当前行booleanfalse
current-row-key当前行的 key,仅可设置string / number
row-class-name行的自定义类名,支持字符串或函数Function / string
row-style行的自定义样式,支持对象或函数Function / object
cell-class-name单元格的自定义类名,支持字符串或函数Function / string
cell-style单元格的自定义样式,支持对象或函数Function / object
header-row-class-name表头行的自定义类名,支持字符串或函数Function / string
header-row-style表头行的自定义样式,支持对象或函数Function / object
header-cell-class-name表头单元格的自定义类名,支持字符串或函数Function / string
header-cell-style表头单元格的自定义样式,支持对象或函数Function / object
row-key行数据的唯一标识,用于优化渲染;使用 reserve-selection 或树形数据时必填;若为字符串,支持多级访问(如 user.info.id),不支持 user.info[0].id(需使用函数)function / string
empty-text空数据时显示的文本,可通过 #empty 插槽自定义string暂无数据
default-expand-all是否默认展开所有行(仅对含展开列或树形数据的表格生效)booleanfalse
expand-row-keys展开行的 key 数组,使用前需设置 row-keyobject
default-sort默认排序配置,prop 为默认排序列,order 为默认排序方式object若设置了 prop 但未设置 order,则默认升序
tooltip-effect溢出提示的主题样式enumdark
tooltip-options溢出提示的配置项,参考 tooltip 组件objectobject
append-filter-panel-to筛选面板挂载的目标元素(选择器)string
show-summary是否显示合计行booleanfalse
sum-text合计行第一列显示的文本string合计
summary-method自定义合计方法,返回值为合计行各列内容(支持 VNode 或字符串)Function
span-method合并单元格方法,返回值为 [rowspan, colspan] 或Function
select-on-indeterminate多选表格中,当仅部分行被选中时,全选框的行为:true 表示选中所有行,false 表示取消选中booleantrue
indent树形数据的缩进距离(像素)number16
lazy是否开启懒加载booleanfalse
load懒加载加载子行数据的方法(仅 lazy 为 true 时生效),参数:row(当前行)、treeNode(树形节点)、resolve(加载完成的回调,需传入子行数据)Function
tree-props树形数据配置,hasChildren 为是否有子节点的字段名,children 为子节点字段名,checkStrictly 为是否取消父子节点选中关联objectobject
table-layout表格布局算法enumfixed
scrollbar-always-on是否始终显示滚动条booleanfalse
show-overflow-tooltip是否在单元格内容溢出时显示 tooltip,将影响所有列,参考表格 tooltip-optionsboolean / object
flexible确保主轴最小尺寸不跟随内容变化booleanfalse
scrollbar-tabindex表格主体滚动容器的 tabindex 属性string / number
allow-drag-last-column是否允许拖动最后一列调整宽度booleantrue
tooltip-formatter自定义 show-overflow-tooltip 启用时的 tooltip 内容,参数:Function
preserve-expanded-content折叠时是否保留展开行内容在 DOM 中booleanfalse
native-scrollbar是否使用原生滚动条booleanfalse

TableColumnItem

继承所有 Element Plus TableColumnCtx 属性,并新增以下增强功能:

属性名说明类型默认值
slots自定义插槽配置:设为 true 时,自动生成 {prop}(列内容)、{prop}-header(表头)、{prop}-filterIcon(筛选图标)、{prop}-expand(展开按钮)插槽;设为对象时,每个属性支持布尔值(true 启用并使用自动生成名称)或字符串(自定义插槽名称)boolean | object-
number-format数字格式化配置:设为 true 时使用默认数字格式化;设为对象时传入自定义格式化选项,优先级高于表格级的 numberFormat 设置boolean | object-
children表头分组的子列数组,子列可嵌套 children 实现多级分组,用于创建多层级表头array-
edit编辑表单配置(用于行内编辑):设为 FormItem 时启用该列编辑功能,FormItem 接口继承 Element Plus FormItemProps,包含额外属性:type(组件类型字符串)、componentProps(组件额外属性)、children(嵌套表单项配置)object-

Table 事件

事件名说明类型
refresh点击刷新按钮时触发Function
export点击导出按钮时触发Function
search执行搜索操作时触发Function
pagination-change分页状态变化时触发Function
add执行新增操作时触发Function
edit执行编辑操作时触发Function
delete执行删除操作时触发Function
batch执行批量操作时触发Function
Element Plus Table 原生事件
事件名说明类型
select点击行复选框时触发Function
select-all点击表头复选框时触发Function
selection-change选中项变化时触发Function
cell-mouse-enter鼠标移入单元格时触发Function
cell-mouse-leave鼠标移出单元格时触发Function
cell-click点击单元格时触发Function
cell-dblclick双击单元格时触发Function
cell-contextmenu右键点击单元格时触发Function
row-click点击行时触发Function
row-contextmenu右键点击行时触发Function
row-dblclick双击行时触发Function
header-click点击列表头时触发Function
header-contextmenu右键点击列表头时触发Function
sort-change表格排序状态变化时触发Function
filter-change表格筛选状态变化时触发Function
current-change当前选中行变化时触发Function
header-dragend拖动列表头边框调整列宽后触发Function
expand-change展开/折叠行时触发(展开行表格:第二个参数为展开行数组;树形表格:第二个参数为是否展开)Function
scroll表格滚动时触发Function

Table 插槽

插槽名说明
toolbar-left工具栏左侧自定义内容
Element Plus Table 原生插槽
插槽名说明子标签
default表格主体自定义内容Table-column
append插入到表格最后一行之后的内容,如需实现表格无限滚动可使用此插槽;若存在合计行,该插槽内容将显示在合计行上方
empty空数据时的自定义内容

Table Exposes

Element Plus Table Exposes
名称说明类型
clearSelection多选表格专用,清空用户选中的行Function
getSelectionRows返回当前选中的行数据数组Function
toggleRowSelection多选表格专用,切换指定行的选中状态;第二个参数可直接设置行是否选中(true 选中,false 取消)Function
toggleAllSelection多选表格专用,切换全选/取消全选状态Function
toggleRowExpansion展开行表格/树形表格专用,切换指定行的展开状态;第二个参数可直接设置行是否展开(true 展开,false 折叠)Function
setCurrentRow单选表格专用,设置指定行为当前选中行;无参数时清空选中Function
clearSort清空排序状态,恢复数据原始顺序Function
clearFilter清空筛选状态:传入 columnKey 数组时清空指定列筛选,无参数时清空所有列筛选Function
doLayout刷新表格布局,当表格可见性变化时,可能需要调用此方法确保布局正确Function
sort手动触发表格排序:prop 为排序列字段名,order 为排序方式('ascending' 升序,'descending' 降序)Function
scrollTo滚动表格到指定坐标位置Function
setScrollTop设置表格垂直滚动位置(像素)Function
setScrollLeft设置表格水平滚动位置(像素)Function
columns获取表格列配置上下文数组array
updateKeyChildren懒加载表格专用(需设置 row-key),更新指定 key 对应的子行数据Function

TableColumn API

TableColumn 属性

Element Plus TableColumn 原生属性
属性名说明类型默认值
type列类型:selection(复选框列)、index(索引列)、expand(展开按钮列)、default(默认列)enumdefault
index索引列自定义索引:支持数字(索引偏移量)或函数(参数为原始索引,返回自定义索引),仅对 type=index 的列生效number / Function
label列标题string
column-key列的唯一标识,使用 filter-change 事件时需通过该属性识别列string
prop列对应的行数据字段名,别名:propertystring
width列宽度string / number''
min-width列最小宽度:width 为固定宽度,min-width 为自适应宽度(按比例分配剩余空间)string / number''
fixed列固定位置:true/left(固定在左侧)、right(固定在右侧)enum / booleanfalse
render-header表头自定义渲染函数,参数:Function
sortable是否支持排序:true(启用默认排序)、custom(远程排序,需监听表格 sort-change 事件)boolean / stringfalse
sort-method自定义排序方法(sortabletrue 时生效),返回值规则同 Array.sort(负数:a 在 b 前,正数:a 在 b 后,0:位置不变)Function
sort-by排序依据字段(sortabletrue 且未设置 sort-method 时生效):支持字符串(单个字段)、数组(多字段排序,前字段相等时按后字段排序)、函数(参数:row 行数据、index 行索引,返回排序字段值)Function / string / object
sort-orders排序顺序选项(sortabletrue 时生效):数组元素为 'ascending'(升序)、'descending'(降序)、null(取消排序),用户点击表头时按数组顺序切换object['ascending', 'descending', null]
resizable是否允许拖动列宽(仅表格 bordertrue 时生效)booleantrue
formatter单元格内容格式化函数,参数:row(行数据)、column(列配置)、cellValue(单元格原始值)、index(行索引),返回值支持 VNode 或字符串function
show-overflow-tooltip单元格内容溢出时是否显示 tooltip,优先级高于表格级配置boolean / objectundefined
align单元格内容对齐方式:left(左对齐)、center(居中)、right(右对齐)enumleft
header-align表头内容对齐方式,未设置时继承 align 属性值enumleft
class-name单元格自定义类名string
label-class-name表头标题自定义类名string
selectable多选列专用,控制行是否可选中(typeselection 时生效),参数:row(行数据)、index(行索引),返回布尔值Function
reserve-selection多选列专用,数据刷新后是否保留选中状态(typeselection 时生效),使用前需设置表格 row-keybooleanfalse
filters列筛选选项数组,每个元素需包含 text(显示文本)和 value(筛选值)array
filter-placement筛选下拉框挂载位置,可选值:top/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-endenum
filter-class-name筛选下拉框自定义类名string
filter-multiple筛选是否支持多选booleantrue
filter-method筛选方法:filter-multipletrue 时,每行将多次调用该方法(每个筛选值一次),只要有一次返回 true 该行即显示;参数:value(筛选值)、row(行数据)、column(列配置)function
filtered-value筛选选中值(表头自定义渲染时可能需要用到)object
tooltip-formatter自定义 show-overflow-tooltip 启用时的 tooltip 内容,参数:Function

TableColumn 插槽

Element Plus TableColumn 原生插槽
插槽名说明类型
default列内容自定义object
header表头内容自定义object
filter-icon筛选图标自定义object
expand展开按钮自定义object

常见问题(FAQ)

如何在表格中实现图片预览?

vue
<template>
  <bk-table-column width="180">
    <template #default="scope">
      <el-image preview-teleported :preview-src-list="srcList" />
    </template>
  </bk-table-column>
</template>