Skip to content

Table 表格

用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作。

基础用法

指定 columnsdata 就可以得到一个表格

Tip

由于表格宽度的计算规则,暂时如果需要表格自动撑满,需要给一个列指定宽度

vue




斑马纹表格

使用带斑马纹的表格,可以更容易区分出不同行的数据。

stripe 属性可以创建带斑马纹的表格。 如果 true, 表格将会带有斑马纹。

vue




带边框表格

默认情况下,Table 组件是不具有竖直方向的边框的,可以使用border属性,把该属性设置为true即可启用。

vue




自定义表格的样式

指定 table 的相关特性,可以单独设置行,列,单元格的样式

TIP

在定义整行样式和 class 的时候,由于表格样式的覆盖,部分整体设置的样式无法生效,可以采用无筛选单元格的形式进行设置,即在设置单元格 class 和 style 的样式的时候不针对某一特殊的进行设置,直接返回样式和 class 。
要针对单个设置特殊的样式,可以返回公用样式(class)和 单独样式(class)的组合。

vue






固定表头

纵向内容过多时,可选择固定表头。

只要在 Table 中定义了 height 属性,即可实现固定表头的表格,而不需要额外的代码。
文档样式暂时固定样式显示有点问题,待修复!!!(实际使用没有问题)

vue




固定列

横向内容过多时,可选择固定列。

在 column 中加上 fixed 属性可以实现固定列。使用固定列,最好使用 scroll 属性置顶最大的宽度,

传入字符串,left 或 right,表示左边固定还是右边固定。 文档样式暂时固定列样式有点问题,待修复!!!

vue




表格合并

指定 cell-span 属性,可以控制单元格的合并

使用方法

自定义单元格合并。返回[rowSpan, colSpan]。只要其中一个设成0就会忽略渲染
colSpan是 2 表示占用两列。rowSpan 是 2 表示占用两行,在下面的例子中。第 2 行第 2 列占用了两行[2, 1]。所以第 2 行第 3 列应该设置colSpan为 0。

vue




动态显示隐藏

指定 column重的 when属性可以自定义显示与隐藏行
when 的属性值是一个函数,函数的参数是 { row, rowIndex },返回值为 boolean 如果是 true 就会渲染,反之不显示

vue




表格单选

选择单行数据时使用色块表示。

通过将 highlight-current-row 设置为 true 实现高亮效果。可以通过 v-model:current 拿到选中行的唯一索引,可以通过 v-model:currentSelected拿到选中行的数据对象。

vue




表格多选

columns 中可以定义 一个 type: 'selection' 的多选列,在 Table 上可以通过 v-model:selected 拿到选中的对象数组,可以通过 v-model:selectedKeys 拿到 唯一 id 数组,唯一 id 需要使用 rowKey 来指定,大部分场景都只需要单独使用其中一个 v-model

还可以通过在 column中设置为 selection 的列上添加 disabledWhen 来制定某一行禁止选择,使用方法类似于 when 的使用,根据返回值指定是否禁用

vue




表格排序

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

在列中设置 sortable 属性即可实现以该列为基准的排序, 接受一个 Boolean,默认为 false。 可以通过 Table 的 sort 属性设置默认的排序列和排序顺序。 可以使用在 Table上监听sort-change事件, 在事件回调中可以获取当前排序的字段名和排序顺序。

vue




自定义列

自定义列的显示内容,可组合其他组件使用。

在列中设置 render 属性,通过 render 返回一个渲染函数、字符串或者 JSX。

vue




表格拓展行

通过 expand 属性可以控制表格的扩展行显示

使用方式

通过在 column 中将 type 类型指定为 expand ,同时 Table 上绑定 expand 值,指定 expand 出现的条件和展开后自定义渲染的内容

vue




函数式赋值

Table组件的数据和操作数据的方法可以通过createTable动态创建和使用

特点

通过闭包的形式,将表格的数据和修改方式隔离开,可以避免表格数据在使用过程中被污染,更好保障了数据显示的准确性

vue




Table Props

prop说明类型默认值
data表格里的数据Array[]
columns列选项Column[][]
stripe是否启用斑马纹booleanfalse
border是否启用表格 borderbooleanfalse
headerRowClassNameheader row 的 class 生成函数函数 () => string
headerRowStyleheader row style 生成函数函数 () => ({})
headerCellClassNameheader cell 的 class 生成函数函数 ({ colIndex }) => string
headerCellStyleheader cell 的 style 生成函数函数 ({ colIndex}) => ({})
rowClassNametbody row 的 class 生成函数函数 ({ row, rowIndex }) => string
rowStyletbody row 的 style 生成函数函数 ({ row, rowIndex }) => ({})
cellClassNametbody td cell 的 class 生成函数函数 ({ row, rowIndex, col, colIndex }) => string
cellStyletbody row 的 style 生成函数函数 ({ row, rowIndex, col, colIndex }) => ({})
cellSpan用来处理单元格合并,返回[rowspan, celspan]表示一个 td 的 rowspan 和 celspan,其中一个为 0,这个单元格不显示函数 ({ row, rowIndex, col, colIndex }) => ({})() => [1, 1]
heighttable 的高度,指定表格高度时,如果表格高度超过设定高度,滚动的时候会固定表头Number
showHeader是否显示 table headerbooleantrue
showData是否显示 table bodybooleantrue
rowKey表格数据的唯一键索引string'id'
highlightCurrentRow高亮当前选中行,可以结合 current 实现单选booleantrue
current当前选中的行 indexNumber-1
selected多选选中的行Array[]
selectedKeys高亮当前选中行的唯一 key 集合Array[]
sort表格排序({ order: 'asc' | 'desc', prop: string }){}
expand扩展行配置({ rowExpandable: () => boolean, expandRowRender: CustomeRender })() => {}
scroll表格横向滚动的时候,需要指定 width 属性{}

Table 事件

事件名称说明回调参数
update:selected更新已经选中的行DataItem[]
update:selectedKeys更新选中的行的 key[]
update:current更新当前选中的行DataItem
update:currentSelected更新当前选中的行的 keystring number
sort-change排序的回调order, prop

Column 属性

属性说明类型默认值
title表格的标题CustomRender-
width列宽度Number | String-
align对其方式'left'、'center'、'right'-
className单元格 classstring-
colSpantheader > th 的 colSpan,用来自定义合并单元格Number1
sortable排序Booleanfalse
prop排序的 prop,指定排序的列String'id'
type特殊类型,selection 是多选,index 是索引, expand 是展开按钮'selection' | 'index' | 'expand''index'
fixed固定列,固定到左边或者右边'left' | 'right'-
when显示列() => boolean-
field指定显示的内容String-
render自定义单元格的渲染,入参是 row, rowIndex, colIndexRenderFn<{ row?: DataItem; colIndex?: number; rowIndex?: number }>-
disabledWhen指定禁用行({row, rowIndex}) => boolean-
buttons通过 buttons 来渲染按钮(arg: { row?: DataItem,rowIndex?: number,colIndex?: number}) => Button[]-

createTable

返回值

ts
const [tableOptions, tableUtils] = createTable(column, (shallowRef = false))

tableOptions

属性说明类型
data表格数据DataItem[]
loading加载中Boolean
columns列配置Column[]
pagination分页信息Pagination
showPagination是否展示分页Boolean
showData是否展示表格数据Boolean
showHeader是否展示表格头Boolean

tableUtils

属性说明类型
setColumns设置表格列配置(column[]) => void
getColmns获取列配置-
setData设置数据信息(DataItem[]) => void
getData获取表格数据-
getPagination获取分页信息-
setPagination设置分页信息(Pagination[]) => void
updatePager更新分页(pager) => void
getCurrentPage获取当前页码-
triggerPagination转换是否显示分页-
triggerData转换是否显示数据-
triggerHeader转换是否显示头部-