el-table树形表格排序
时间: 2023-09-03 07:15:55 浏览: 117
表格排序
如果你使用的是 ElementUI 中的 el-table 树形表格,那么你可以通过设置 `treeProps` 属性来指定树形结构的相关属性。其中包括 `children` 表示子节点的属性名,`hasChildren` 表示是否有子节点的属性名。
在排序时,你可以使用 `sort` 属性来指定排序规则,例如:
```html
<el-table
:data="tableData"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
:sort-method="sortTable">
<el-table-column prop="name" label="名称" sortable></el-table-column>
<el-table-column prop="age" label="年龄" sortable></el-table-column>
</el-table>
```
其中,`sort-method` 属性指定了排序方法,可以在 `methods` 中定义:
```js
methods: {
sortTable(a, b) {
// 判断是否为根节点
const aParent = this.getParentNode(a)
const bParent = this.getParentNode(b)
const aIsRoot = !aParent
const bIsRoot = !bParent
// 根节点优先
if (aIsRoot && !bIsRoot) {
return -1
} else if (!aIsRoot && bIsRoot) {
return 1
}
// 比较节点值
if (a[this.sortField] > b[this.sortField]) {
return this.sortOrder === 'ascending' ? 1 : -1
} else if (a[this.sortField] < b[this.sortField]) {
return this.sortOrder === 'ascending' ? -1 : 1
} else {
return 0
}
},
getParentNode(node) {
// 获取当前节点的父节点
const parentKey = this.$refs.table.treeProps.children
const parentNode = this.$refs.table.getNodeById(node[parentKey])
return parentNode
}
}
```
在 `sortTable` 方法中,首先判断当前节点是否为根节点,如果是根节点则优先排在前面。然后再比较节点值进行排序。在获取父节点时,可以使用 `$refs` 获取到 el-table 的实例,然后调用 `getNodeById` 方法获取节点对应的行数据。
以上是一个示例代码,你可以根据自己的实际需求进行修改。
阅读全文