table中的columns fixed列 不会随table对应的行高度变化而变化,导致不对齐;请问有没有什么解决方法,亲测do-layout()方法无效;
例子:某列数据为中文,点击后输入框输入,高度会有变化,但fixed列的对应高度不会有变化;
1 使用table的highlight-current-row属性
这会使当前行高亮,并会触发重新计算表格高度,fixed列高度会变化。
可以在点击行后设置当前行为高亮行,实现fixed列高度同步更新。
2 监听table的height变化,手动同步fixed列高度
在table外层使用一个height监听器,当height变化时,获取fixed列元素并更新其高度。
通过给table传入span-method方法可以实现合并行或列,方法的参数是一个对象
data() {
return {
tableArr: [], //定义空数组,作为临时存储每一行已处理的数据
pos:0, //
}
}
:span-method="SpanMethod" //Element-ui table表格的属性 ,例: <el-table :span-method="SpanMethod" ></el-table>
//获取数据,并对数据进行处理
for (var i = 0; i < data.length; i++) {
if (i === 0) {
this.tableArr.push(1);
this.pos = 0;
} else {
// 判断当前元素与上一个元素是否相同
if (data[i].DEPT_NAME === data[i - 1].DEPT_NAME) {
this.tableArr[this.pos] += 1;
//判断当前行与上一行内容相同时 返回0 ,0 意味消除 , 即不显示
this.tableArr.push(0);
} else {
this.tableArr.push(1);
this.pos = i;
}
}
}
实现合并相同项,
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) { //第一列
const _row = this.tableArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
// console.log(`rowspan:${_row} colspan:${_col}`);
return {
// [0,0] 表示这一行不显示, [2,1]表示行的合并数
rowspan: _row,
colspan: _col,
};
}
},