Skip to content

FxTable 表格

用于展示行列数据。自实现、不依赖任何 UI 框架,支持列配置、自定义单元格/表头渲染、斑马纹、纵向边框、table-layout 等。

FxTable 属于 @fx/components(UI 框架无关的通用组件)。

基础用法

通过 FxTableColumn 配置列,data 提供行数据。

斑马纹

使用 stripe 属性启用斑马纹。

边框

使用 border 属性启用纵向边框。

表格布局

通过 table-layout 控制列宽算法:fixed(默认,列宽固定、溢出省略)与 auto(列宽随内容自适应)。

自定义列内容

使用 FxTableColumndefault 插槽自定义单元格,参数为 { row, column, $index }

自定义表头

使用 header 插槽自定义表头,参数为 { column, $index }

排序

FxTableColumn 设置 sortable 属性可启用排序,点击表头在「升序 → 降序 → 取消」之间循环切换。通过 default-sort 设置初始排序,sort-orders 可自定义切换顺序。

筛选

FxTableColumn 设置 filters(筛选项数组)与 filter-method(过滤函数)启用筛选。filter-multiple 控制单选/多选(默认多选),column-key 用于 clearFilter 精确定位列。

多选

设置 FxTableColumntype="selection" 启用多选列。监听 selection-change 获取选中行;通过 ref 调用 toggleRowSelection / clearSelection / toggleAllSelection / getSelectionRows

单选(当前行高亮)

设置 highlight-current-row 启用单选高亮,点击行触发 current-change。通过 ref 调用 setCurrentRow 程序化设置当前行,或用 current-row-key + row-key 定位。

可选树(父子联动 / checkStrictly)

树形数据下,tree-props.check-strictly 控制父子节点选择是否联动:true 时父子独立(选父不选子),false 时父选则子全选。selectable 函数控制单行是否可选。

溢出提示

FxTableColumn 设置 show-overflow-tooltip,单元格内容溢出时 hover 显示完整内容。tooltip-formatter 可自定义 tooltip 内容。

自定义序号

type="index" 列显示行序号,index 属性传函数可自定义序号算法。

行/列合并

span-method 合并单元格,返回 [rowspan, colspan](数组)或 { rowspan, colspan }(对象),返回 0 表示该单元格被合并。

固定列

fixed 设为 true'left' 固定在左侧,'right' 固定在右侧。

固定表头

heightmax-height 限定高度后,表头固定、表体滚动。

固定列 + 固定表头

合计行

show-summary 显示合计行,默认对数值列求和(首列显示 sum-text),summary-method 自定义合计逻辑。

展开行

type="expand" 列配合 #default 插槽渲染展开内容。

分组表头

FxTableColumn 嵌套即可生成多级表头。

树形数据 / 懒加载

row-key 必填;tree-props 配置子节点字段,子节点写在 children 即可渲染为树形;lazy + load 实现懒加载(节点需标 hasChildren: true)。

行状态高亮

通过 row-class-name 为行添加状态 class(如 warning-row / success-row),结合 CSS 变量 --fx-table-tr-bg-color 自定义行背景色。

固定列 + 分组表头

固定列与分组表头组合使用:左固定列、嵌套分组表头、右固定列共存。

固定表头 + 流体高度

max-height 限制表体最大高度,内容超出时表体滚动且表头固定。

Table API

FxTable Attributes

属性说明类型默认值
data表格数据array[]
size尺寸'large' | 'default' | 'small''default'
height表格高度string | number
max-height表格最大高度string | number
fit列宽是否自适应容器booleantrue
stripe是否显示斑马纹booleanfalse
border是否显示纵向边框booleanfalse
row-key行数据的 Keystring | ((row) => string)
show-header是否显示表头booleantrue
table-layout布局算法'fixed' | 'auto''fixed'
row-class-name行的 classNamestring | (({ row, rowIndex }) => string)
row-style行样式object | (({ row, rowIndex }) => object)
cell-class-name单元格 classNamestring | (({ row, rowIndex, column, columnIndex }) => string)
cell-style单元格样式object | (({ row, rowIndex, column, columnIndex }) => object)
header-row-class-name表头行 classNamestring | fn
header-row-style表头行样式object | fn
header-cell-class-name表头单元格 classNamestring | fn
header-cell-style表头单元格样式object | fn
empty-text空数据文案string'暂无数据'
highlight-current-row单选高亮当前行booleanfalse
current-row-key当前行的 key(需配合 row-keystring | number
default-sort默认排序列{ prop: string, order: 'ascending' | 'descending' }
select-on-indeterminate半选时点击全选的行为booleantrue
tooltip-effect溢出 tooltip 主题'dark' | 'light''dark'
tooltip-options溢出 tooltip 选项透传object
show-overflow-tooltip单元格溢出全局提示booleanfalse
append-filter-panel-to筛选面板 teleport 目标string
span-method合并单元格方法({ row, column, rowIndex, columnIndex }) => [number, number] | { rowspan, colspan }
show-summary是否显示合计行booleanfalse
sum-text合计行首列文案string'合计'
summary-method自定义合计方法({ columns, data }) => array
default-expand-all默认展开所有行booleanfalse
expand-row-keys展开行的 keys(需配合 row-keyarray
lazy树形懒加载booleanfalse
load懒加载回调(lazy 时)(row, treeNode, resolve) => void
indent树形缩进(px)number16
tree-props树形配置{ hasChildren?, children?, checkStrictly? }{ children: 'children', hasChildren: 'hasChildren', checkStrictly: false }
native-scrollbar启用原生滚动条(不走 FxScrollbar)booleanfalse
scrollbar-always-on滚动条常显booleanfalse
scrollbar-tabindex滚动条 tabindexnumber
row-expandable行是否可展开(type="expand"(row, index) => boolean
flexibleflex 容器下保证 min-size 不被撑大booleanfalse
allow-drag-last-column允许拖拽最后一列列宽booleantrue
preserve-expanded-content展开行收起后保留 DOMbooleanfalse

FxTable Events

事件名说明回调参数
cell-click单元格点击(row, column, cell, event)
cell-dblclick单元格双击(row, column, cell, event)
cell-mouse-enter单元格移入(row, column, cell, event)
cell-mouse-leave单元格移出(row, column, cell, event)
cell-contextmenu单元格右键(row, column, cell, event)
row-click行点击(row, column, event)
row-dblclick行双击(row, column, event)
row-contextmenu行右键(row, column, event)
header-click表头点击(column, event)
header-contextmenu表头右键(column, event)
scroll滚动({ scrollLeft, scrollTop })
select手动勾选行时(selection, row)
select-all点击全选时(selection)
selection-change选中项变化(selection)
sort-change排序变化({ column, prop, order })
filter-change筛选变化(filters)
current-change当前行变化(currentRow, oldCurrentRow)
expand-change行展开(数组)或树形节点展开(boolean)(row, expandedRows | expanded)
header-dragend列宽拖拽结束后触发(newWidth, oldWidth, column, event)

FxTable Slots

名称说明
defaultFxTableColumn
empty空数据自定义内容
append表体底部追加内容

FxTable Exposes

名称说明参数
doLayout重新计算布局
scrollTo滚动到指定坐标(x, y)
setScrollLeft设置横向滚动位置(left)
setScrollTop设置纵向滚动位置(top)
sort程序化排序(prop, order)
clearSort清除排序
clearFilter清除筛选(columnKeys?)
setCurrentRow设置当前行(不传参数则清空)(row?)
getSelectionRows获取选中行数组
getHalfSelectionRows获取半选行数组(树形 indeterminate)
toggleRowSelection切换行选中(第 3 参 ignoreSelectable 绕过 selectable(row, selected?, ignoreSelectable?)
clearSelection清除选中
toggleAllSelection切换全选
toggleRowExpansion切换行展开(row, expanded?)
toggleTreeExpansion切换树形节点展开(需 row-key(row, expanded?)
updateKeyChildren更新懒加载子节点(需 lazy + row-key(key, data)

FxTableColumn Attributes

属性说明类型默认值
type列类型:default / selection / index / expandstring'default'
label列标题string
prop字段名(别名 propertystring
width列宽string | number
min-width最小列宽(按比例分配剩余)string | number
align排列方向'left' | 'center' | 'right'
header-align表头排列方向'left' | 'center' | 'right'align
class-name列单元格 classNamestring
label-class-name列标题 classNamestring
formatter单元格格式化函数(row, column, cellValue, index) => VNode | string
column-key列标识(筛选 / 选择定位用)string
index自定义序号(type="index" 用)number | ((index) => number)
sortable是否可排序('custom' 表示远程排序,需自行监听 sort-changeboolean | 'custom'false
sort-method自定义排序比较函数(a, b) => number
sort-by排序依据字段string | string[] | ((row) => string)
sort-orders排序切换顺序('ascending' | 'descending' | null)[]['ascending', 'descending', null]
resizable列宽可拖拽(阶段③)booleantrue
filters筛选项数组{ text, value }[]
filter-method筛选过滤函数(value, row, column) => boolean
filter-multiple多选筛选booleantrue
filter-placement筛选面板位置Placement'bottom-start'
filtered-value受控筛选值string[]
selectable行是否可选(type="selection"(row, index) => boolean
reserve-selection数据变化时保留选中(需配合 row-keybooleanfalse
show-overflow-tooltip单元格溢出提示(可传对象透传 tooltip 选项)boolean | object
tooltip-formatter溢出 tooltip 内容格式化({ row, column, cellValue }) => VNode | string
fixed固定列boolean | 'left' | 'right'

FxTableColumn Slots

名称说明参数
default自定义单元格内容(type="expand" 时为展开行内容){ row, column, $index }
header自定义表头内容{ column, $index }
expand自定义展开触发图标内容(type="expand"{ expanded, expandable }
filter-icon自定义筛选图标内容{ filterOpened }