Table 表格
用于展示多种类型的数据。当前版本仍以 xy-table + xy-table-column 作为唯一列定义方式,提供完善的能力组织,补齐了 selection / index / expand / fixed / summary / span-method / tree / lazy / methods 这一组高频能力。
如果你正在把后台项目里的列表页样式收口到组件库层,先看 后台迁移指南,再回来对照 overview 和 wrapper token 的使用方式。
基础用法
基础表格继续使用子组件列定义,支持当前行高亮、行点击和默认单元格插槽。
点击任意一行切换当前焦点,让基础表格也能保留后台列表该有的层级和主状态。
带状态的表格
使用 row-class-name 可以为不同行增加状态层,适合审批、告警和风控类列表。
列表页表格壳层
当业务只是想让普通后台列表页的表头、边框和单元格节奏贴近页面主题时,优先在 wrapper 上设置 table token,而不是继续 deep 到 .xy-table__cell、.xy-table__header-cell 这类内部类名。
当页面只是想让普通列表页的表头、边框和单元格节奏贴近业务主题时,优先在 wrapper 上设置 table token,而不是继续 deep 到 .xy-table__cell 或 .xy-table__header-cell。
Dashboard 概览模式
当表格用于工作台首屏、指标看板或概览面板时,建议显式开启 overview。它会在不改变默认 size="md" 合同的前提下,统一收紧表头、正文、空态、loading、append 和展开区的节奏,减少业务页自行覆盖样式的需要。
当表格用于 dashboard 首屏时,建议显式开启 overview,用更轻的节奏承接核心服务、状态和健康度摘要,而不是在页面层逐个覆盖 padding、空态和附加区样式。
当页面仍需要做轻度场景化调整时,优先在表格实例根节点上覆写 table 自己的变量,而不是继续 deep 到 .xy-table__cell / .xy-table__expanded-content / .xy-table__append-wrapper。当前高频可调入口包括:
--xy-table-background:主表体背景--xy-table-surface-background:固定列、筛选面板等浮起表面--xy-table-subtle-background:展开区、次级容器背景--xy-table-radius:表格外框圆角--xy-table-header-font-size / --xy-table-header-font-weight:表头字体层级--xy-table-header-text-transform / --xy-table-header-letter-spacing:表头文案风格--xy-table-header-cell-padding-y / --xy-table-header-cell-padding-x:表头单元格节奏--xy-table-body-cell-padding-y / --xy-table-body-cell-padding-x:正文单元格节奏--xy-table-footer-cell-padding-y / --xy-table-footer-cell-padding-x:汇总/页脚单元格节奏--xy-table-overview-cell-padding-y / --xy-table-overview-cell-padding-x:概览态单元格节奏--xy-table-overview-expanded-padding:概览态展开区 padding--xy-table-overview-append-padding:概览态 append 区 padding--xy-table-overview-empty-padding / --xy-table-overview-empty-content-padding:概览态空态节奏
远程排序与分页
当排序、筛选和分页由服务端驱动时,可以通过受控排序状态、列级受控筛选和分页参数统一联动外部请求;切换排序或筛选后应主动回到第一页。
让请求状态、当前排序和分页脚手架形成完整的列表版式,而不是单个 tag 加一张表。
筛选与排序
表格内置列级筛选和本地排序;多选筛选会在点击“确定”后统一提交。
单选筛选
单选筛选面板支持方向键切换、回车确认和 Tab 关闭,适合需要键盘可达性的列表场景。
固定列与列宽拖拽
固定列、固定高度和列宽拖拽常用于后台长列表。示例保留了横向溢出,方便直接观察固定列边界表现。
Auto 布局与响应式滚动
table-layout="auto" 会优先根据真实内容测宽;结合 flexible、native-scrollbar 和实例方法滚动,可以更直观地观察列宽优先级与布局同步。
多级表头与合并单元格
通过嵌套 xy-table-column 和 span-method 可以组织多级表头与合并单元格。
Auto、固定列与汇总组合
当列表既有长文本列、又需要左右锚定列和经营指标汇总时,可以把 table-layout="auto"、分组表头、固定列与 summary-method 组合在同一张表里。
自定义表头
通过 header 插槽可以自定义表头内容,也可以把局部搜索和轻筛选放进表头。
选择列、展开行与实例方法
selection / index / expand / fixed / show-summary 可以组合使用,实例方法适合做列表控制和状态回写。
选择列与实例方法控制
当列表需要“选中第一行 / 清空选择 / 主动排序”这类外部控制时,可以直接通过实例方法驱动表格状态。
实例方法与事件联动
sort / clearSort / clearFilter / toggleAllSelection 这类实例方法适合由外部工具栏触发,再通过 sort-change / filter-change / selection-change 回写状态摘要。
受控状态组合
当当前行、展开行、排序和筛选需要与路由、工具栏或请求参数保持同源时,可以把它们统一收敛到外部受控状态,再通过事件回写。
展开行与汇总行
展开行适合承载补充说明,summary-method 适合自定义汇总结果,两者可以组合使用。
树形数据与懒加载
树形数据和懒加载共用同一套列树与 body 渲染链路;可以通过 updateKeyChildren 主动写回 lazy 子节点,并配合 preserve-expanded-content 保留展开内容 DOM。
Lazy 挂起与手动写回
当 lazy 请求仍在挂起时,节点会保持 loading 态并忽略重复点击;如果业务侧提前拿到 children,可以通过 updateKeyChildren 直接写回并结束 loading。
附加内容与滚动事件
append 插槽会渲染在表体末尾、汇总行之前;scroll 会在原生滚动、固定列联动和实例方法滚动后统一派发。
行操作列
任意一列都可以通过默认插槽变成自定义单元格,操作列不依赖额外命名插槽。
行尾工具区适合承接轻操作和二级菜单,让列表保持节奏感,而不是堆满同权重按钮。
加载态与空态
Table 可以作为加载态、空态和列表内容的统一承载容器。
Table 的默认加载遮罩已经接入统一的 Loading indicator。未自定义 loading 插槽时,会使用与独立 Loading 一致的 spinner 和文案表现;同时会读取 ConfigProvider.loading 的 text / spinner / svg / svgViewBox / background 作为视觉默认项,但不会继承 delay / minDuration / fullscreen / lock。
空态、加载态与错误态
页面层可以在正常、空结果、加载中和加载失败之间切换,Table 负责统一展示容器与骨架。
何时使用
- 后台列表页、运营视图和只读数据表格。
- 需要选择列、展开行、固定列、汇总行、树形数据等经典 Table 能力。
- 需要通过
xy-table-column的嵌套声明组织复杂表头,而不是维护columns数组。
最佳实践
先补稳定的 row-key
- 只要涉及
selection、当前行高亮、展开行、tree、lazy、updateKeyChildren或“数据刷新后保留状态”,都应显式提供稳定的row-key。 - 不要直接使用页内索引、排序后会变化的字段或只在当前页唯一的临时值;这些 key 会让选择、展开和当前行恢复语义失效。
row-key支持点路径,但路径最终解析出的值仍需保持全量数据范围内稳定且唯一。
区分受控状态与默认状态
default-current-row-key、default-expand-all、default-sort更适合首屏初始化,不适合承载长期业务状态。- 一旦传入
current-row-key、expand-row-keys,或兼容态的sortProp / sortOrder / filterValues,就应把它们视为受控值,并由外部单一数据源维护。 - 不建议同时依赖默认值、实例方法和外部受控值反复抢占同一份状态;需要与路由、工具栏、服务端查询参数同步时,应优先采用受控写法。
根据场景选择 fixed 或 auto
table-layout="fixed"适合字段语义稳定、列宽预期明确的后台列表,推荐配合width / min-width获得更稳定的首屏布局。table-layout="auto"更适合长短文本混排、内容宽度差异明显的列表,但仍建议给关键列设置width或min-width作为兜底。auto布局下列宽优先级为“手动拖拽 > 显式width> 自动测宽”;内容频繁变化的列会重新收敛,因此不建议把所有列都完全交给自动测宽。- 当
show-header=false时,auto会退回按 body 内容测宽,关键列更建议保留min-width,避免纯数据波动造成视觉抖动。
优先调实例级 table token,而不是 deep 覆盖内部类名
- 如果页面只是想微调概览表格的密度、append 区节奏、展开区背景或筛选面板表面色,优先在
xy-table根节点或业务 wrapper 上设置 table 变量。 overview适合 dashboard / 首屏摘要;列表页若仅需主题接轨,也优先设置--xy-table-background / --xy-table-surface-background / --xy-table-subtle-background,不要直接把通用--xy-bg-container压进.xy-table作用域。- 只有当业务需要真正改写单元格内容结构时,才考虑
cell-class-name / cell-style或页面层插槽;纯视觉节奏问题不建议继续 deep 到__cell。
后台项目迁移时,可优先按下面的映射关系删除旧覆盖:
| 旧覆盖写法 | 优先替代方式 | 适用场景 |
|---|---|---|
.xy-table__cell { padding: ... } | --xy-table-body-cell-padding-y/x | 普通列表页正文节奏 |
.xy-table__header-cell { padding: ... } | --xy-table-header-cell-padding-y/x | 普通列表页表头节奏 |
.xy-table__footer-cell { padding: ... } | --xy-table-footer-cell-padding-y/x | 汇总行 / 页脚节奏 |
.xy-table__header-cell { background: ...; color: ... } | --xy-table-header-background + --xy-table-header-color | 表头主题接轨 |
.xy-table th { font-size / font-weight / text-transform / letter-spacing } | --xy-table-header-font-size / --xy-table-header-font-weight / --xy-table-header-text-transform / --xy-table-header-letter-spacing | 表头排版基线 |
.xy-table { border-color: ... } | --xy-table-border-color | 边框 / 固定列分隔线 |
.xy-table { border-radius: ...; overflow: hidden } | --xy-table-radius | 列表卡片内的表格外框 |
.xy-table__row:hover > .xy-table__cell { background: ... } | --xy-table-row-hover-background | hover 态主题化 |
.xy-table__row.is-current > .xy-table__cell { background: ... } | --xy-table-row-current-background | 当前行高亮 |
.xy-table.is-striped ... { background: ... } | --xy-table-row-striped-background | 斑马纹 |
.xy-table__expanded-cell / __append-wrapper / __empty-block 的 padding 覆盖 | overview 或对应 overview token | dashboard / 摘要表格 |
[data-theme] .xy-table { --xy-bg-container / --xy-bg-raised: ... } | --xy-table-background / --xy-table-surface-background / --xy-table-subtle-background | 表格自身表面色,不再污染通用背景 token |
可迁移的普通列表页写法示例:
<template>
<div class="table-shell">
<xy-table :data="rows" row-key="id">
<!-- columns -->
</xy-table>
</div>
</template>
<style scoped>
.table-shell {
--xy-table-background: var(--bg-raised);
--xy-table-surface-background: var(--bg-raised);
--xy-table-subtle-background: var(--bg-elevated);
--xy-table-radius: 10px;
--xy-table-header-background: var(--bg-elevated);
--xy-table-header-color: var(--text-secondary);
--xy-table-header-font-size: 12.5px;
--xy-table-header-text-transform: uppercase;
--xy-table-header-letter-spacing: 0.04em;
--xy-table-border-color: var(--border-default);
--xy-table-header-cell-padding-y: 12px;
--xy-table-header-cell-padding-x: 14px;
--xy-table-body-cell-padding-y: 13px;
--xy-table-body-cell-padding-x: 14px;
}
</style>- 上面这类 wrapper 级变量,优先替代
.xy-table__cell { padding: ... }、.xy-table__header-cell { background: ... }、.xy-table__header-cell { padding: ... }、.xy-table th { text-transform: ... }、.xy-table { border-radius: ... }这种结构覆盖。 - 如果页面只是在列表和 dashboard 之间切换节奏,优先用
overview + wrapper token组合,不要再为同一张表同时维护多套内部类名覆盖。
当前后台项目里剩余的典型覆盖,可按下面思路迁移:
dashboard/index.vue里的order-table :deep(.xy-table__cell)更适合直接改成overview,或者只保留 wrapper 级--xy-table-body-cell-padding-y/x。system/user/index.vue、system/role/index.vue里为了列表页节奏而写的:deep(.xy-table__cell),现在应迁到list-shell示例这套 wrapper token。src/style/index.scss里[data-theme] .xy-table下整块!important变量覆盖,优先改成根层 table token;只有业务局部结构样式,例如操作列按钮布局,才继续留在页面层。
在弹性容器中使用 auto
- 表格位于 flex 子项中时,推荐同时开启
flexible,或确保外层容器显式设置min-width: 0。 - 如果父容器仍保留默认最小宽度约束,横向压缩会被父层拦住,表现上会像
auto没有生效。
tree / lazy 推荐写法
- tree 与 lazy 场景应始终补齐
row-key,否则展开、选择、子节点回写与状态恢复都缺少稳定锚点。 load只负责异步获取 children;如果业务侧提前拿到结果,优先调用updateKeyChildren(key, children),不要一边直接改原数组、一边再依赖内部 lazy 缓存兜底同步。- 默认树形选择会保持父子联动;如果业务需要严格独立勾选,应显式开启
tree-props.checkStrictly。 default-expand-all更适合作为初始展开策略。数据整批替换后它会按当前数据重新作用,但不适合作为长期受控展开源。
实例方法适合做一次性动作
clearSelection、clearSort、clearFilter、toggleAllSelection、scrollTo这类实例方法更适合由外部工具栏触发的一次性操作。- 如果页面状态需要可回放、可序列化,或者要与 URL / 查询条件保持同步,优先使用受控 props,而不是完全依赖实例方法驱动。
preserve-expanded-content适合保留折叠区 DOM 与本地状态,但会增加页面保留节点数量;在超大列表或重量级详情区中应谨慎开启。
API
Table Attributes
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
data | 数据源 | T[] | [] |
row-key | 行唯一标识字段或函数 | TableProps<T>["rowKey"] | undefined |
size | 表格尺寸 | TableProps["size"] | 'md' |
overview | 是否启用概览态节奏,适合 dashboard / 首屏摘要类表格 | boolean | false |
width | 表格根节点宽度 | string | number | undefined |
height | 固定高度,超过后表体滚动 | string | number | undefined |
max-height | 最大高度,超过后表体滚动 | string | number | undefined |
fit | 是否让列宽自适应容器宽度 | boolean | true |
stripe | 是否显示斑马纹 | boolean | false |
border | 是否显示完整边框和纵向分割线 | boolean | false |
show-header | 是否显示表头 | boolean | true |
show-summary | 是否显示汇总行 | boolean | false |
sum-text | 汇总行第一列文案 | string | '合计' |
summary-method | 自定义汇总行计算 | TableProps<T>["summaryMethod"] | undefined |
empty-text | 默认空态文案 | string | '暂无数据' |
loading | 是否显示加载态遮罩 | boolean | false |
loading-text | 默认加载文案 | string | 'Loading...' |
highlight-current-row | 是否高亮当前行 | boolean | false |
current-row-key | 当前行 key,受控模式 | TableProps<T>["currentRowKey"] | undefined |
default-current-row-key | 当前行 key 的非受控初始值 | TableProps<T>["defaultCurrentRowKey"] | null |
default-sort | 默认排序配置;只传 prop 时会默认按升序生效 | TableSortState | { prop: undefined, order: undefined } |
expand-row-keys | 展开行 key 列表 | TableProps<T>["expandRowKeys"] | undefined |
default-expand-all | 是否默认展开全部可展开行/树节点 | boolean | false |
row-expandable | 控制 type="expand" 行是否可展开 | TableProps<T>["rowExpandable"] | undefined |
span-method | 单元格合并逻辑 | TableProps<T>["spanMethod"] | undefined |
select-on-indeterminate | 头部勾选在半选态下是否直接全选 | boolean | true |
indent | 树形缩进宽度 | number | 16 |
tree-props | 树形字段配置 | TableTreeProps | { children: 'children', hasChildren: 'hasChildren', checkStrictly: false } |
lazy | 是否启用懒加载树节点 | boolean | false |
load | 懒加载回调 | TableProps<T>["load"] | undefined |
table-layout | 表格布局算法 | TableLayout | 'fixed' |
show-overflow-tooltip | 是否为默认文本链路统一开启溢出 tooltip,可传 tooltip 配置对象 | TableOverflowTooltip | false |
tooltip-effect | 全表默认溢出 tooltip 主题 | TableProps["tooltipEffect"] | undefined |
tooltip-options | 全表默认溢出 tooltip 配置 | TableOverflowTooltipOptions | undefined |
tooltip-formatter | 自定义溢出 tooltip 文案 | TableProps<T>["tooltipFormatter"] | undefined |
append-filter-panel-to | 指定筛选面板挂载节点选择器 | string | '' |
row-class-name | 行 class 或 class 计算函数 | TableRowClassName<T> | '' |
row-style | 行样式或样式计算函数 | TableRowStyle<T> | undefined |
cell-class-name | 单元格 class 或 class 计算函数 | TableProps<T>["cellClassName"] | '' |
cell-style | 单元格样式或样式计算函数 | TableProps<T>["cellStyle"] | undefined |
header-row-class-name | 表头行 class 或 class 计算函数 | TableHeaderRowClassName | '' |
header-row-style | 表头行样式或样式计算函数 | TableHeaderRowStyle | undefined |
header-cell-class-name | 表头单元格 class 或 class 计算函数 | TableHeaderCellClassName<T> | '' |
header-cell-style | 表头单元格样式或样式计算函数 | TableHeaderCellStyle<T> | undefined |
class-name | 表格根节点附加 class | string | '' |
style | 表格根节点附加样式 | StyleValue | undefined |
clickable | 是否把主表体行视为可点击项,并补齐键盘聚焦与回车触发 | boolean | false |
scrollbar-always-on | 是否为滚动容器保留稳定滚动条槽位 | boolean | false |
scrollbar-tabindex | 表体滚动容器的 tabindex | string | number | undefined |
flexible | 是否让表格所在的 flex 子项自动解除最小宽度限制 | boolean | false |
native-scrollbar | 是否使用原生滚动条而不是自定义滚动条 | boolean | false |
allow-drag-last-column | 是否允许拖拽当前渲染带中的最后一个叶子列 | boolean | true |
preserve-expanded-content | 折叠展开行后是否保留其 DOM | boolean | false |
aria-label | 表格容器的无障碍名称 | string | undefined |
aria-labelledby | 关联表格标题元素 id | string | undefined |
aria-describedby | 关联表格说明元素 id | string | undefined |
Compatibility Notes
stripe是主命名,striped仅保留兼容,不再作为文档主推写法。border是主命名,bordered仅保留兼容,不再作为文档主推写法。- 表级
sortProp / sortOrder / filterValues / defaultFilterValues仍可兼容使用,但不再作为推荐 API。 row-class-name / row-style / header-row-class-name / header-row-style / header-cell-class-name / header-cell-style现阶段主推对象风格入参;旧的拆参签名仍保留兼容。- 列级
filtered-value优先级高于表级filterValues;表级filterValues再高于内部defaultFilterValues。 table-layout="auto"下,列宽优先级遵循“手动拖拽 > 显式 width > 自动测宽”,动态切换width后会重新收敛到最新优先级。lazy树节点在 loading 期间会忽略重复点击;如果通过updateKeyChildren手动写回 children,会直接结束 loading 并使用新子节点。
Behavior Notes
- 当
row-key稳定时,当前行、选择结果、展开状态以及 tree / lazy 相关状态会尽量按 key 恢复到新数据上。 - 如果
row-key缺失、发生变化,或新数据中已不存在对应 key,表格会把这些记录视为全新的行,不保证继续沿用旧状态。 - 远程排序、筛选和分页场景中,表格负责交互发起与事件派发,最终数据、分页参数、排序摘要仍应由外部请求层统一维护。
Table Events
| 事件 | 说明 | 参数 |
|---|---|---|
row-click | 行点击或键盘触发时派发 | TableRowClickHandler<T> |
row-dblclick | 行双击时派发 | TableRowMouseHandler<T> |
row-contextmenu | 行右键时派发 | TableRowMouseHandler<T> |
cell-click | 单元格点击时派发 | TableCellMouseHandler<T> |
cell-dblclick | 单元格双击时派发 | TableCellMouseHandler<T> |
cell-contextmenu | 单元格右键时派发 | TableCellMouseHandler<T> |
cell-mouse-enter | 鼠标进入单元格时派发 | TableCellMouseHandler<T> |
cell-mouse-leave | 鼠标离开单元格时派发 | TableCellMouseHandler<T> |
header-click | 表头点击时派发 | TableHeaderMouseHandler<T> |
header-contextmenu | 表头右键时派发 | TableHeaderMouseHandler<T> |
header-dragend | 列拖拽结束时派发 | TableHeaderDragendHandler<T> |
selection-change | 选择结果变化时派发 | TableSelectionChangeHandler<T> |
select | 单行选择变化时派发 | TableSelectHandler<T> |
select-all | 头部全选变化时派发 | TableSelectionChangeHandler<T> |
current-change | 当前高亮行变化时派发 | TableCurrentChangeHandler<T> |
sort-change | 排序变化时派发 | TableSortChangePayload<T> |
filter-change | 筛选变化时派发 | TableFilterChangeHandler |
expand-change | 展开行或树节点变化时派发 | TableExpandChangeHandler<T> |
scroll | 表体滚动、固定列联动滚动或实例方法滚动后派发 | TableScrollPayload |
update:currentRowKey | 当前行 key 更新 | TableCurrentRowKeyChangeHandler |
update:sortProp | 兼容排序列更新 | TableSortPropChangeHandler |
update:sortOrder | 兼容排序方向更新 | TableSortOrderChangeHandler |
update:filterValues | 兼容筛选状态更新 | TableFilterValuesChangeHandler |
update:expandRowKeys | 展开行 key 更新 | TableExpandRowKeysChangeHandler |
事件名在运行时和类型层以 camelCase 暴露,例如
update:currentRowKey;在 Vue 模板里监听或使用v-model时,推荐写成 kebab-case,例如@update:current-row-key、v-model:current-row-key。
Accessibility Notes
- 表格根节点会输出
role="table"、aria-rowcount、aria-colcount与aria-busy。 aria-label / aria-labelledby / aria-describedby适合在页面已经有标题、提示文案时接入无障碍语义。- 展开按钮和树节点开关会自动输出
aria-expanded;lazy 节点加载中会额外输出aria-busy="true"。 - 筛选按钮会输出
aria-haspopup="dialog"与当前打开状态,适合和键盘筛选场景一起使用。
Table Methods
这些方法更适合做“外部触发的一次性动作”,例如清空筛选、重置排序、滚动定位或主动切换选择状态;如果你需要把状态与路由、查询参数或服务端结果长期同步,优先使用受控 props。
| 方法 | 说明 | 签名 |
|---|---|---|
clearSelection | 清空当前选择 | TableInstance<T>["clearSelection"] |
getSelectionRows | 获取当前选择行 | TableInstance<T>["getSelectionRows"] |
toggleAllSelection | 切换当前页全选 | TableInstance<T>["toggleAllSelection"] |
toggleRowSelection | 切换单行选择状态;第三参数可显式决定是否忽略 selectable | TableInstance<T>["toggleRowSelection"] |
toggleRowExpansion | 切换展开行状态 | TableInstance<T>["toggleRowExpansion"] |
setCurrentRow | 设置当前高亮行 | TableInstance<T>["setCurrentRow"] |
clearSort | 清空排序 | TableInstance<T>["clearSort"] |
clearFilter | 清空筛选 | TableInstance<T>["clearFilter"] |
sort | 主动设置排序 | TableInstance<T>["sort"] |
doLayout | 重新同步布局与滚动度量 | TableInstance<T>["doLayout"] |
scrollTo | 滚动到指定位置 | TableInstance<T>["scrollTo"] |
setScrollTop | 设置纵向滚动位置 | TableInstance<T>["setScrollTop"] |
setScrollLeft | 设置横向滚动位置 | TableInstance<T>["setScrollLeft"] |
updateKeyChildren | 在 lazy 模式下按 row-key 主动写回某个节点的子节点 | TableInstance<T>["updateKeyChildren"] |
Table Exposes
下表中的方法同时也是实例方法;如果通过
ref获取表格实例,可直接调用这些暴露项。
| 名称 | 说明 | 类型 |
|---|---|---|
columns | 当前解析后的列上下文 | TableInstance<T>["columns"] |
clearSelection | 清空当前选择 | TableInstance<T>["clearSelection"] |
getSelectionRows | 获取当前选择行 | TableInstance<T>["getSelectionRows"] |
toggleAllSelection | 切换当前页全选 | TableInstance<T>["toggleAllSelection"] |
toggleRowSelection | 切换单行选择状态 | TableInstance<T>["toggleRowSelection"] |
toggleRowExpansion | 切换展开行状态 | TableInstance<T>["toggleRowExpansion"] |
setCurrentRow | 设置当前高亮行 | TableInstance<T>["setCurrentRow"] |
clearSort | 清空排序 | TableInstance<T>["clearSort"] |
clearFilter | 清空筛选 | TableInstance<T>["clearFilter"] |
sort | 主动设置排序 | TableInstance<T>["sort"] |
doLayout | 重新同步布局与滚动度量 | TableInstance<T>["doLayout"] |
scrollTo | 滚动到指定位置 | TableInstance<T>["scrollTo"] |
setScrollTop | 设置纵向滚动位置 | TableInstance<T>["setScrollTop"] |
setScrollLeft | 设置横向滚动位置 | TableInstance<T>["setScrollLeft"] |
updateKeyChildren | 在 lazy 模式下按 row-key 主动写回子节点 | TableInstance<T>["updateKeyChildren"] |
Table Slots
| 插槽 | 说明 |
|---|---|
default | 列定义区,只接收 xy-table-column |
loading | 自定义加载态内容 |
empty | 自定义空态内容 |
append | 渲染在表体末尾、汇总行之前的附加区域 |
TableColumn Attributes
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
type | 列类型 | TableColumnType | 'default' |
prop | 读取行数据的字段名 | keyof T & string | undefined |
property | prop 的兼容别名 | keyof T & string | undefined |
label | 列标题 | string | '' |
column-key | 列状态 key,筛选和排序优先使用它 | string | undefined |
width | 列宽 | string | number | undefined |
min-width | 最小列宽 | string | number | undefined |
align | 单元格对齐方式 | TableAlign | 'left' |
header-align | 表头对齐方式 | TableAlign | 跟随 align |
class-name | 单元格 class | string | '' |
label-class-name | 表头 class | string | '' |
formatter | 默认单元格格式化函数 | TableColumnProps<T>["formatter"] | undefined |
render-header | 函数式自定义表头内容 | TableColumnProps<T>["renderHeader"] | undefined |
sortable | 是否开启排序;'custom' 表示远程排序 | TableSortable | false |
sort-method | 本地排序函数 | TableColumnProps<T>["sortMethod"] | undefined |
sort-by | 指定排序字段或排序读取函数 | TableColumnProps<T>["sortBy"] | undefined |
sort-orders | 排序切换顺序 | TableColumnProps<T>["sortOrders"] | ['ascending', 'descending', null] |
filters | 列筛选项 | TableColumnProps<T>["filters"] | [] |
filtered-value | 当前列筛选状态 | TableColumnProps<T>["filteredValue"] | undefined |
filter-method | 自定义筛选函数 | TableColumnProps<T>["filterMethod"] | undefined |
filter-multiple | 是否多选筛选 | TableColumnProps<T>["filterMultiple"] | true |
filter-placement | 当前列筛选面板的浮层位置 | TableColumnProps<T>["filterPlacement"] | 'bottom-start' |
filter-class-name | 当前列筛选面板的附加 class | TableColumnProps<T>["filterClassName"] | '' |
show-overflow-tooltip | 当前列是否启用溢出 tooltip,可传 tooltip 配置对象 | TableOverflowTooltip | 跟随表格 show-overflow-tooltip |
tooltip-formatter | 当前列自定义溢出 tooltip 文案,优先级高于表格级 formatter | TableColumnProps<T>["tooltipFormatter"] | undefined |
fixed | 固定列位置 | TableColumnFixed | undefined |
selectable | selection 列的可选行判断 | TableColumnProps<T>["selectable"] | undefined |
reserve-selection | selection 列是否按 row-key 保留选择状态 | TableColumnProps<T>["reserveSelection"] | false |
index | index 列起始值或自定义序号函数 | TableColumnProps<T>["index"] | undefined |
resizable | 当前叶子列是否允许拖拽列宽 | TableColumnProps<T>["resizable"] | false |
TableColumn Slots
| 插槽 | 说明 | 参数 |
|---|---|---|
default | 自定义单元格内容;type="expand" 时用于渲染展开内容 | TableCellSlotProps<T> |
expand | type="expand" 的专用展开内容槽位,优先级高于默认槽 | TableExpandSlotProps<T> |
header | 自定义表头内容 | TableHeaderSlotProps<T> |
filter-icon | 自定义筛选图标 | TableFilterIconSlotProps |