AGILE TEAM
Skip to content

API 参考 ​

📝 作者
誉
杨晨誉
杨晨誉共享技术中心
工号:409322

适用于 v0.38.0。GridOptions<TData> 是 Core、Vue 与 React 的统一配置契约:Vue 模板使用 kebab-case,React/TypeScript 使用 camelCase。建议用 defineGridOptions<T>() 或 satisfies GridOptions<T> 保留完整类型推断。

ts
const options = defineGridOptions<Order>({
  rowKey: "id",
  columnDefs,
  rowData,
  columnLayout: "fit"
});

GridOptions — 数据与身份 ​

配置类型默认值说明
columnDefs(ColDef<T> | ColDefGroup<T>)[] | null[]列与分组表头定义
rowDataT[] | null[]本地行数据;与 datasource 不同时使用
rowKeyFieldPath<T> | (row: T) => string | number自动 ID稳定业务主键;编辑、选择保持、事务、树和远程数据强烈建议提供
rowNumberbooleanVue/React true,Core false列加载后自动显示序号
defaultColDefPartial<ColDef<T>>内置默认列全列默认值
columnTypesRecord<string, Partial<ColDef<T>>>{}通过 colDef.type 复用的语义列类型
initialStateGridState—列与首批数据就绪后原子恢复的 v2 状态

rowKey 支持点路径和派生函数,返回值必须稳定、非空且全数据集唯一:

ts
rowKey: "identity.id";
// 或
rowKey: (row) => `${row.tenantId}:${row.id}`;

GridOptions — 布局、主题与密度 ​

配置类型默认值说明
size"compact" | "normal" | "large""normal"联动字号、行高和间距
theme"light" | "dark" | "auto""light"明暗主题;auto 跟随系统
rowHeight / headerHeightnumber随密度行高/单层表头高度
getRowHeight(params) => number—可变行高
rowBuffernumber8视口上下预渲染行数
columnLayout"normal" | "fit""normal"fit 持续填满容器
enableColumnResizebooleanfalse开启鼠标、触控、双击和键盘列宽调整
domLayout"normal" | "autoHeight""normal"自动高度只用于小型本地表(不能与 datasource 混用)
rowStyleRulesreadonly RowStyleRule<T>[][]条件整行颜色,首条命中
stripedRowsbooleanfalse斑马纹
showCellBordersbooleanfalse纵向单元格边框

默认虚拟布局的宿主必须有明确高度;空态/加载态/错误态预留 180px 最小展示空间(--mach-overlay-min-height 可覆盖)。

GridOptions — 列交互 ​

配置类型默认值说明
columnMenubooleanfalse表头排序、固定、宽度和显隐菜单
multiSortbooleantrueShift 叠加多列排序
manualSortingbooleanfalse只更新排序模型和事件,由服务端执行
manualFilteringbooleanfalse只更新过滤模型和事件,由服务端执行
quickFilterTextstring | nullnull跨列快速搜索
advancedFilterModelAdvancedFilterModel | nullnull可序列化 AND/OR/NOT 表达式树
aggFuncsRecord<string, (values) => unknown>内置函数自定义聚合函数

GridOptions — 选择、编辑和剪贴板 ​

配置类型默认值说明
rowSelection"none" | "single" | "multiple""none"行选择模式
editType"cell" | "fullRow""cell"单元格或原子整行编辑
editableIndicator"hover" | "always" | "none""hover"可编辑铅笔提示策略
singleClickEditbooleanfalse单击开始编辑
rowEditValidator(params) => result | Promise<result>—整行跨字段校验
undoStackSizenumber100撤销栈容量;0 关闭
enableRangeSelectionbooleanfalseExcel 式单元格范围
fillHandlebooleantrue范围填充柄
suppressClipboardbooleanfalse禁用复制、剪切和粘贴
contextMenubooleanfalse内置右键菜单
getContextMenuItems(params) => items | null内置项自定义菜单
flashCellsbooleantrue值变化后的短暂高亮

GridOptions — 树、分组、详情和固定行 ​

配置类型默认值说明
treeDatabooleanfalse树数据模式(与 rowGroup/masterDetail 互斥)
childrenKeystring"children"本地子节点字段
isTreeRowExpandable(params) => boolean—标记可远程展开节点
loadTreeChildrenasync ({ data, node, api, signal }) => rows—可取消、去重的懒加载
autoCheckedChildrenbooleantrue树选择父子联动
defaultExpandAllbooleanfalse初始展开全部
masterDetailbooleanfalse主从详情
detailRowHeightnumber240详情行高度
detailRowRenderer(params) => RenderOutput—详情 renderer
isRowExpandable(params) => boolean全部详情行展开条件
detailToggleColumnbooleantrue自动详情展开列
applyRowDragbooleantrue行拖动后自动应用重排
pinnedTopRowData / pinnedBottomRowDataT[] | null[]顶部/底部固定行

GridOptions — 分页与远程数据 ​

配置类型默认值说明
paginationboolean | PaginationConfigtrue默认客户端分页每页 20 条;datasource 无限模式自动关闭
datasourceGridDatasource<T>—无限/随机访问数据源
datasourceMode"sequential" | "block""sequential"顺序追加或随机块模型
blockSizenumber100每块行数
infiniteBufferRowsnumber40顺序模式预取阈值
maxBlocksInCachenumber12随机块 LRU 容量
datasourceMaxConcurrentRequestsnumber4活动请求上限
blockPrefetchnumber1相邻块预取半径
datasourceRowCountnumber—首次响应前的已知总量
datasourceRetryCount / RetryDelay / RetryJitternumber2 / 300 / 0.15自动重试次数/首退避毫秒/抖动比例
asyncTransactionWaitMillisnumber16异步事务合并窗口
dataProcessorGridDataProcessor<T> | (() => GridDataProcessor<T>)—单表独占异步过滤/排序处理器(≥ dataProcessorMinRows 默认 5000 行才启用)

普通 B 端请求分页优先使用适配包 /workflows 的 useMachTableQuery();百万级可跳转长列表再选 datasourceMode: "block"。

GridOptions — 状态持久化与呈现 ​

ts
interface GridPersistenceOptions {
  key: string; // 应包含应用、租户、用户和表格场景
  sections?: readonly ("columns" | "sort" | "filter" | "pagination" | "selection" | "expansion")[];
  store?: GridStateStore; // 默认安全的 localStorage,可接后端/IndexedDB
  debounceMs?: number; // 默认 160
}
配置默认值说明
persistencefalse自动加载并保存 v2 GridState;sections: ["columns"] 仅保存列偏好
initialState—首屏恢复,不自动保存
loading / errorfalse / null加载/错误覆盖层(error 优先于空状态)
overlayLoadingTemplate / overlayNoRowsTemplate / overlayErrorTemplate内置文本、HTMLElement 或工厂;字符串默认纯文本渲染
watermarkfalseCanvas 平铺水印
showSummary / summaryMethodfalse底部合计行与每列合计文本
statusBarfalse行数、选择数和范围聚合状态栏
locale中文文案覆盖;提供 LOCALE_EN
components / features{} / []实例级 renderer/editor 注册表与扩展
actionPolicy—操作列权限、确认和异常策略
suppressCellFocus / suppressHeaderFocusfalse关闭相应键盘焦点

ColDef — 列定义 ​

标识、标题与宽度 ​

属性类型默认说明
colIdstringfield 或 col_{i}列唯一标识(排序/过滤/列状态都以它为键)
fieldstring—数据取值字段,支持点路径 a.b.c
headerNamestringfield表头文本
align / headerAlign"left" | "center" | "right""center"单元格/表头对齐
widthnumber内容测宽显式首选宽度 px
autoWidthbooleantrue未声明 width 时按内容抽样测宽(每列最多 100 行,默认 80–360px)
minWidth / maxWidthnumber80 / 360边界;表头完整展示不受限
flexnumber0弹性权重:容器有余量时按权重分配
pinned"left" | "right" | boolean—固定列;true 等价 "left"
hidebooleanfalse初始隐藏

交互开关 ​

属性类型默认说明
sortablebooleantrue点击表头排序(asc → desc → 无)
resizablebooleantrue需表格级 enableColumnResize: true 才生效
movablebooleantrue拖拽表头换位
filterboolean | "text" | "number" | "date" | "set"false过滤器类型;true 等价 "text",过滤摘要自动显示为表头 tag
filterParams{ values?, maxValues? }—set 过滤器候选值;默认从数据派生(上限 500)

值与渲染 ​

属性说明
valueGetter取值(替代 field);排序/过滤/导出一致使用
valueFormatter显示格式化;返回非字符串自动 String()
valueSetter写值(编辑/粘贴/填充/撤销统一入口);返回是否变更
valueParser / valueSerializer同步规范输入值 / 决定剪贴板、CSV 与 XLSX 的输出值(target: "clipboard" | "csv" | "xlsx")
statustrue 用默认状态色;映射 { label, color } 支持语义色(success/warning/danger/info/neutral)或 CSS 色
cellRenderer函数返回 string | HTMLElement | { el, destroy },或字符串查注册表(内置 statusTag/progressBar/link)
cellRendererParams渲染器参数通道
cellClass / cellStyle附加类名 / 动态行内样式(条件标红等)
tooltipValueGetter覆盖默认 title
wrapText / autoHeight换行 / 内容驱动行高(canvas 测量,仅首帧)
type从全局 columnTypes 解析语义类型,可叠加
ts
const columns = [
  { field: "customer", headerName: "客户", maxWidth: 280 },
  { field: "status", headerName: "状态", status: true },
  { field: "planStatus", headerName: "计划状态", status: {
    S1B: { label: "待复核", color: "danger" },
    S1C: { label: "已完成", color: "success" }
  } }
];

编辑与行 ​

属性说明
editableboolean | (p) => boolean;粘贴/填充/Delete 只写可编辑格
cellEditor"text" | "number" | "date" | "select"、工厂函数或注册名;内置按值类型自动推断
cellEditorParamsselect 选项:{ values } 或 { options: [{ label, value }] }
validate返回字符串时显示错误并拒绝写入;支持异步(唯一性/库存/权限等服务端规则)
checkboxSelection复选框列(单选模式呈 radio)
selectable行级禁选;全选/分组级联自动跳过
rowDrag行拖拽手柄列
rowGroup作为分组字段(多列多级)
aggFuncsum/avg/count/min/max/first/last 或 aggFuncs 注册的自定义
autoRowSpan / rowSpan / colSpan自动合并连续相同值 / 回调式跨行 / 跨列
initialSort"asc" | "desc" 初始排序
onCellClick / onCellDoubleClick列级单元格事件

ColDefGroup(多级表头) ​

ts
{
  headerName: "业务信息",
  children: [
    { field: "name", headerName: "名称" },
    { headerName: "指标", children: [{ field: "score", headerName: "分数" }] } // 任意嵌套
  ]
}

表头行数自动 = 最大嵌套深度;叶子列交互不受分组影响;列状态按 colId 保留。

GridApi — 12 个领域化命令 ​

createGrid()、Vue/React 的 useMachTable() 返回同一套 API。根级只负责生命周期、配置、事件和批处理;API 与各领域对象均被冻结。

根级 ​

方法说明
batch(callback)合并回调内的模型、布局和渲染更新;嵌套安全
whenReady()首次布局和 gridReady 后返回当前 API
getOption(key) / updateOptions(patch)读取合并后当前值 / 原子校验并更新配置
on(event, listener)订阅事件并返回解除函数
destroy() / isDestroyed()释放全部资源 / 查询销毁状态

api.rows ​

方法说明
setData(rows)全量替换本地数据;稳定 rowKey 保留选择语义
transact({ add?, addIndex?, remove?, update? })同步增量事务
transactAsync(transaction, { signal? }) / flushTransactions()异步事务队列 / 立即提交
getCount() / getAt(index) / getById(id)行数 / 按展示索引 / 按稳定 ID 取 RowNode
forEach(callback) / forEachDisplayed(callback)遍历全部 / 过滤排序后的展示行
reorder(fromIndex, toIndex)本地行重排
isRemote() / reload({ signal? })是否远程 / 重载远程数据
ensureLoaded(start, end) / purgeCache() / getCacheSnapshot()随机块区间加载 / 清缓存 / 缓存诊断

api.columns ​

方法说明
getDefinitions() / setDefinitions(defs)读取或替换列定义
getState() / setState(state) / resetState()列状态快照、恢复和重置
setVisible(colId, visible) / setPinned(colId, side) / move(colId, toIndex) / setWidth(colId, width)显隐 / 固定 / 顺序 / 程序化列宽(不受 enableColumnResize 限制)
fit(width?) / autoSize(colId) / autoSizeAll()缩放 / 按内容自动宽度
openWorkbench(anchor?) / closeWorkbench() / getWorkbenchItems()内置列工作台

api.selection ​

方法说明
getRows() / getNodes() / getIds() / getVisibleRows()已选行、节点、ID、可见已选行
setRows(rows, clearOthers?) / setById(id, selected?, clearOthers?)设置选择
selectAll(filteredOnly?) / clear()全选(可仅过滤结果)/ 清空
getMode() / setMode(mode)单选、多选或关闭
getRange() / clearRange()单元格范围选择

远程"全选全部查询结果"由 /workflows 的 useMachTableQuery() 表达为 allMatching + excludedKeys,不会要求客户端加载全部 ID。

api.editing ​

方法说明
startCell({ rowIndex, colId, keyPress? }) / startRow(rowIndex)开始单元格 / 原子整行编辑
isRowActive(rowIndex?) / stop({ cancel? })编辑中判断 / 异步提交或取消
getChanges() / getDirtyRowIds()待保存变更 / 脏行 ID
markSaved(rowIds?) / rollback(rowIds?)确认变更 / 回滚脏行
save(handler, rowIds?)快照化保存,返回 submitted/saved/failures/conflicts 明细
undo() / redo() / canUndo() / canRedo()撤销重做

其余领域 ​

领域关键方法
api.filteringgetModel()/setModel()、getAdvancedModel()/setAdvancedModel()、getQuickText()/setQuickText()、isPresent(colId?)
api.sortinggetModel() / setModel()
api.paginationisEnabled()/setEnabled()、getPage()/setPage()、getPageSize()/setPageSize()、getPageCount()、getTotalRowCount()
api.hierarchyisRowExpanded/setRowExpanded、isTreeRowLoading、loadTreeChildren(id, { force? })、isGroupExpanded/setGroupExpanded、setAllGroupsExpanded、setAllDetailsExpanded
api.viewgetRoot()、scrollToRow(index, position?)、refreshCells(params?)、refreshLayout()、flush()、setOverlay(...)、getPinnedRows/setPinnedRows
api.stateget() 获取版本化 GridState;apply(state, { sections?, emitEvents? }) 原子恢复
api.ioexportCsv(params?)(默认防公式注入)、exportMatrix(params?)(保留原始值类型)、importCsv(text, options?)、importMatrix(rows, options?)、print()、copyRange()
api.diagnosticsget()、getPerformance()、resetPerformance()——开发/测试/遥测用,不驱动业务状态

导入限制:每次矩阵装载最多 10000 数据行、100000 单元格(含表头),不静默截断;mode 支持 "replace" | "append" | "paste",paste 复用交互校验与撤销管线。

Events — 事件双通道 ​

事件双通道:options.onXxx 回调与 api.on(type, fn)(返回取消函数);Vue 模板用 kebab-case(@cell-value-changed)。所有事件对象都含 type 与 api。

生命周期与错误 ​

事件载荷说明
gridReadyapigrid 可交互
gridDestroyed—destroy() 执行时触发
modelUpdatedrowCount数据管道刷新后
gridErrorcode, error, source, context?用户回调/数据源/持久化抛错时隔离上报;code 为稳定错误码(DATA_SOURCE_ERROR/VALIDATION_ERROR/RENDERER_ERROR 等),业务监控按 code 聚合

交互事件 ​

分类事件载荷要点
单元格/行cellClicked cellDoubleClicked cellContextMenu rowClicked rowDoubleClickedevent, rowNode, rowIndex, column, colDef, value
选择selectionChangedselectedNodes, selectedRows——树形级联、分组级联、API 设置均触发一次
排序/过滤sortChanged filterChangedsortModel / filterModel + advancedFilterModel
列columnResized columnMoved columnVisibilityChanged displayedColumnsChanged拖拽帧 finished: false,松手/API 提交 true;自动持久化只响应完成事件
编辑cellEditingStarted/Stopped rowEditingStarted/Stopped cellValueChanged dirtyStateChangedcellValueChanged 是编辑/粘贴/填充/清除/剪切/undo/redo 的统一写值事件
范围与拖拽rangeSelectionChanged rowDragEnd框选范围 / 行移动(applied 标识是否已应用)
树与明细detailToggled treeChildrenLoaded treeChildrenLoadFailed展开状态;懒加载成功含 children,失败同时进 gridError
分页paginationChangedpage, pageSize, pageCount, total
ts
// 方式一:options 回调
createGrid(host, {
  onSelectionChanged: (e) => saveDraft(e.selectedRows),
  onCellValueChanged: (e) => audit(e.colDef.field, e.oldValue, e.newValue)
});

// 方式二:api.on(返回取消函数)
const off = api.on("rangeSelectionChanged", (e) => console.log("框选", e.range));
off();

深入阅读 ​

You may not distribute, modify, or sell this software without permission.