el-table 多级表头 列添加fixed=left 列错乱

如图错乱显示
在这里插入图片描述
添加 this.$refs.tableList.doLayout();
在这里插入图片描述

### el-table 多级表头固定实现方法 在使用 Element UI 的 `el-table` 组件时,如果需要实现多级表头并固定的功能,可以通过以下方式完成: #### 1. **多级表头的定义** 多级表头通过嵌套 `el-table-column` 实现。每一级表头对应一个 `el-table-column` 标签,子级表头作为父级表头的子标签嵌套在其中[^1]。 ```vue <el-table :data="tableData" border style="width: 100%"> <el-table-column label="一级表头" fixed width="400"> <el-table-column prop="code" label="编号" width="100"></el-table-column> <el-table-column prop="name" label="名称" width="150"></el-table-column> <el-table-column prop="category" label="分类" width="150"></el-table-column> </el-table-column> <el-table-column label="其他数据" width="200"> <el-table-column prop="unit" label="单位" width="100"></el-table-column> <el-table-column prop="value" label="数值" width="100"></el-table-column> </el-table-column> </el-table> ``` #### 2. **固定的实现** 对于多级表头,直接在一级表头中设置 `fixed` 属性只会固定该表头下的首。为确保整个一级表头及其子都固定,需满足以下条件: - 在一级表头添加 `fixed` 属性。 - 确保一级表头的宽度等于其所有子宽度之和[^2]。 ```vue <el-table-column label="固定" fixed width="400"> <el-table-column prop="code" label="编号" width="100"></el-table-column> <el-table-column prop="name" label="名称" width="150"></el-table-column> <el-table-column prop="category" label="分类" width="150"></el-table-column> </el-table-column> ``` #### 3. **解决数据切换导致的错位问题** 当数据动态更新时,可能会出现表格渲染异常或数据错位的情况。为避免此问题,可在数据更新后调用 `el-table` 的 `doLayout()` 方法重新布局表格[^2]。 ```javascript this.$refs.table.doLayout(); ``` #### 4. **数据处理** 若返回的数据结构不符合 `el-table` 的要求(如对象而非数组),需先对数据进行预处理。例如,将对象类型的数据转换为数组形式,并调整字段层级以匹配表头结构[^3]。 ```javascript function processData(data) { const result = []; data.forEach(item => { const row = { code: item.code, name: item.name, category: item.category, unit: item.data.unit, value: item.data.value, dates: Object.keys(item.data.dates).map(key => ({ time: key, dateValue: item.data.dates[key] })) }; result.push(row); }); return result; } ``` ### 注意事项 - 确保一级表头的宽度与子宽度总和一致,否则可能导致显示异常。 - 在动态更新数据时,务必调用 `doLayout()` 方法以保证表格渲染正确。 - 如果涉及复杂数据结构,需提前对数据进行处理以适配 `el-table` 的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值