el-table合并表头handerMethod
项目中使用element的table表格,总是需要一些自定义的要求,虽然element已经提供了很多方法,但是如何使用还是需要自己探索
先上效果截图
这里主要使用到:header-cell-style="handerMethod"和:span-method="spanMethod"用来合并行和列
主要代码包括:
//隐藏表头 handerMethod({ row, column, rowIndex, columnIndex }) { if (row[0].level == 1) { //这里有个非常坑的bug 必须是row[0]=0 row[1]=2才会生效 row[0].colSpan = 0 row[1].colSpan = 2 if (columnIndex === 0) { return { display: 'none' } } } }, //合并列 spanMethod({ row, column, rowIndex, columnIndex }) { if (columnIndex === 0) { if (column.property === 'name') { if (rowIndex !== 0) { return { display: 'none' } } else { return { rowspan: 5, colspan: 1 } } } else { return { rowspan: 1, colspan: 1 } } }
这里有个非常坑的bug 必须是row[0]=0 row[1]=2才会生效 我也是试了很多次才得出这个结论
合并表头代码思路是将两个列通过handerMethod隐藏第一列的同时,让第二列占据两个单元格的宽度来实现合并效果
提供el-table完整代码
<el-table :data="tableData" style="width: 100%" :header-cell-style="handerMethod" :span-method="spanMethod" height="900" border row-class-name="riskList-row" cell-class-name="riskList-cell" header-row-class-name="riskList-headerRow" header-cell-class-name="riskList-headerCell" > <el-table-column prop="name" label="风险等级" width="100" :resizable="false" > </el-table-column> <el-table-column prop="level" label="风险等级" width="400" :resizable="false" > </el-table-column> <el-table-column label="后果" :resizable="false"> <el-table-column label="影响特别重大" width="320" :resizable="false"> <template slot-scope="scope"> <div class="table_item" :style="customState(scope.row.level_1)"> {{ scope.row.level_1 }} </div> </template> </el-table-column> <el-table-column label="影响重大" width="320" :resizable="false"> <template slot-scope="scope"> <div class="table_item" :style="customState(scope.row.level_2)"> {{ scope.row.level_2 }} </div> </template> </el-table-column> <el-table-column label="影响较大" width="320" :resizable="false"> <template slot-scope="scope"> <div class="table_item" :style="customState(scope.row.level_3)"> {{ scope.row.level_3 }} </div> </template> </el-table-column> <el-table-column label="影响一般" width="320" :resizable="false"> <template slot-scope="scope"> <div class="table_item" :style="customState(scope.row.level_4)"> {{ scope.row.level_4 }} </div> </template> </el-table-column> <el-table-column label="影响很小" width="320" :resizable="false"> <template slot-scope="scope"> <div class="table_item" :style="customState(scope.row.level_5)"> {{ scope.row.level_5 }} </div> </template> </el-table-column> </el-table-column> </el-table>
版权声明:
作者:广州前端开发
链接:https://www.develophm.com/index.php/el-table%e5%90%88%e5%b9%b6%e8%a1%a8%e5%a4%b4handermethod/1824/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
文章目录
关闭
共有 0 条评论