Appearance
方法
组件通过 exposed
对象提供了丰富的方法来控制表格行为。这些方法在 tableInitialized
事件触发后可用。
获取方法实例
vue
<template>
<Lubanno7UniverSheet
ref="tableRef"
:columns="columns"
:data="data"
@tableInitialized="handleTableInit"
/>
</template>
<script>
export default {
data() {
return {
columns: [],
data: [],
tableMethods: null
}
},
methods: {
handleTableInit(event) {
this.tableMethods = event.exposed.methods
// 现在可以调用表格方法了
},
someFunction() {
if (this.$refs.tableRef && this.$refs.tableRef.exposed) {
const methods = this.$refs.tableRef.exposed.methods
methods.recreateTable()
}
}
}
}
</script>
数据获取方法
getTableData()
获取当前表格的所有数据。
js
// 返回值:Array
const data = this.tableAPI.methods.getTableData()
console.log(data) // [{ name: '张三', age: 25 }, ...]
getRowByIndex(index)
根据索引获取指定行数据。
- 参数:
index
(number) - 行索引(从 0 开始) - 返回值:
object | null
- 行数据对象,索引无效时返回 null
js
const row = this.tableAPI.methods.getRowByIndex(0)
console.log(row) // { name: '张三', age: 25 }
getRowByFilter(filter)
根据筛选条件获取第一个匹配的行。
- 参数:
filter
(object) - 筛选条件对象 - 返回值:
object | null
- 匹配的行数据,无匹配时返回 null
js
const row = this.tableAPI.methods.getRowByFilter({ name: '张三' })
console.log(row) // { name: '张三', age: 25 }
getRowByFilterAll(filter)
根据筛选条件获取所有匹配的行。
- 参数:
filter
(object) - 筛选条件对象 - 返回值:
Array
- 匹配的行数据数组
js
const rows = this.tableAPI.methods.getRowByFilterAll({ age: 25 })
console.log(rows) // [{ name: '张三', age: 25 }, ...]
getRowIndexByFilter(filter)
根据筛选条件获取第一个匹配行的索引。
- 参数:
filter
(object) - 筛选条件对象 - 返回值:
number
- 行索引,无匹配时返回 -1
js
const index = this.tableAPI.methods.getRowIndexByFilter({ name: '张三' })
console.log(index) // 0
getRowIndexByFilterAll(filter)
根据筛选条件获取所有匹配行的索引数组。
- 参数:
filter
(object) - 筛选条件对象 - 返回值:
Array<number>
- 匹配行的索引数组
js
const indices = this.tableAPI.methods.getRowIndexByFilterAll({ age: 25 })
console.log(indices) // [0, 2, 5]
表格信息方法
getTableHeaderRowCount()
获取表头行数。
js
const headerRows = this.tableAPI.methods.getTableHeaderRowCount()
console.log(headerRows) // 1 或更多(嵌套表头)
getTableDataRowCount()
获取数据行数。
js
const dataRows = this.tableAPI.methods.getTableDataRowCount()
console.log(dataRows) // 实际数据行数
getTableRowCount()
获取总行数(表头 + 数据)。
js
const totalRows = this.tableAPI.methods.getTableRowCount()
console.log(totalRows) // 表头行数 + 数据行数
getTableColumnCount()
获取总列数。
js
const columnCount = this.tableAPI.methods.getTableColumnCount()
console.log(columnCount) // 扁平化后的列数
行操作方法
insertRowBefore(index, rowData)
在指定索引前插入行。
- 参数:
index
(number) - 插入位置索引rowData
(object) - 新行数据
js
this.tableAPI.methods.insertRowBefore(1, {
name: '新用户',
age: 28
})
insertRowAfter(index, rowData)
在指定索引后插入行。
- 参数:
index
(number) - 插入位置索引rowData
(object) - 新行数据
js
this.tableAPI.methods.insertRowAfter(1, {
name: '新用户',
age: 28
})
insertRowToEnd(rowData)
在表格末尾插入行。
- 参数:
rowData
(object) - 新行数据
js
this.tableAPI.methods.insertRowToEnd({
name: '新用户',
age: 28
})
updateRow(index, rowData, mergeWithExisting)
更新指定索引的行数据。
- 参数:
index
(number) - 行索引rowData
(object) - 新的行数据mergeWithExisting
(boolean) - 是否与现有数据合并,默认 true
js
// 部分更新(合并)
this.tableAPI.methods.updateRow(0, { age: 26 })
// 完全替换
this.tableAPI.methods.updateRow(0, { name: '李四', age: 26 }, false)
deleteRow(index)
删除指定索引的行。
- 参数:
index
(number) - 要删除的行索引
js
this.tableAPI.methods.deleteRow(0)
工具方法
getColumnName(columnIndex)
根据列索引获取列名。
- 参数:
columnIndex
(number) - 列索引 - 返回值:
string
- 列的 prop 属性值
js
const columnName = this.tableAPI.methods.getColumnName(0)
console.log(columnName) // 'name'
getColumnIndex(columnName)
根据列名获取列索引。
- 参数:
columnName
(string) - 列的 prop 属性值 - 返回值:
number
- 列索引,未找到时返回 -1
js
const columnIndex = this.tableAPI.methods.getColumnIndex('name')
console.log(columnIndex) // 0
exportToJson(filename)
将表格数据导出为JSON文件。
- 参数:
filename
(string) - 导出的文件名
js
this.tableAPI.methods.exportToJson('table-data.json')
exportToCsv(filename)
将表格数据导出为CSV文件。
- 参数:
filename
(string) - 导出的文件名
js
this.tableAPI.methods.exportToCsv('table-data.csv')
endEditing()
结束当前单元格的编辑状态。
js
await this.tableAPI.methods.endEditing()
setCellFontColor(rowIndex, columnName, color)
设置指定单元格的字体颜色。
- 参数:
rowIndex
(number) - 数据行索引columnName
(string) - 列名color
(string) - 颜色值(如 '#ff0000')
- 返回值:
boolean
- 设置是否成功
js
const success = this.tableAPI.methods.setCellFontColor(0, 'name', '#ff0000')
console.log(success) // true 或 false
方法调用注意事项
- 初始化时机: 大部分方法只有在
tableInitialized
事件触发后才可用 - 异步操作:
endEditing()
是异步方法,需要使用await
- 数据同步: 可以调用
recreateTable()
方法来刷新表格数据,确保数据与 UI 同步 - 错误处理: 建议为方法调用添加 try-catch 错误处理
- 性能考虑: 批量操作时避免频繁调用刷新方法