el-table表格每一行前三列固定为一列,后几列要可以动态新增或删除行,代码要怎么实现
时间: 2024-04-08 08:29:59 浏览: 91
要实现这样的需求,可以使用 element-ui 中的 el-table 组件,并结合一些自定义的逻辑来处理固定列和动态新增/删除行的功能。
首先,你可以在 el-table 中使用 el-table-column 组件来定义表格的列,将前三列固定为一列,后面的列则使用 v-for 指令根据动态数据生成。
```html
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column type="index" label="序号" width="80"></el-table-column>
<el-table-column label="固定列" fixed width="200">
<template slot-scope="scope">
<!-- 这里是前三列的内容 -->
<span>{{ scope.row.column1 }}</span>
<span>{{ scope.row.column2 }}</span>
<span>{{ scope.row.column3 }}</span>
</template>
</el-table-column>
<!-- 动态新增/删除行的列 -->
<el-table-column v-for="(column, index) in dynamicColumns" :key="index" :label="column.label">
<template slot-scope="scope">
<!-- 这里是动态列的内容 -->
<span>{{ scope.row[column.prop] }}</span>
</template>
</el-table-column>
</el-table>
</template>
```
在上面的代码中,tableData 是你的表格数据,dynamicColumns 是一个数组,用于存储动态列的配置信息。你可以通过对 dynamicColumns 数组进行增删操作,来实现动态新增/删除行的功能。
在组件的 JavaScript 部分,你可以定义 tableData 和 dynamicColumns 两个数据,并提供相应的方法来处理动态列的增删操作。
```javascript
<script>
export default {
data() {
return {
tableData: [
// 表格数据
{ column1: '固定列1', column2: '固定列2', column3: '固定列3', column4: '动态列1', column5: '动态列2' },
// ...
],
dynamicColumns: [
// 动态列配置
{ label: '动态列1', prop: 'column4' },
{ label: '动态列2', prop: 'column5' },
// ...
]
};
},
methods: {
// 添加动态列
addColumn() {
this.dynamicColumns.push({ label: '新列', prop: 'newColumn' });
},
// 删除动态列
removeColumn(index) {
this.dynamicColumns.splice(index, 1);
}
}
};
</script>
```
上面的代码中,addColumn 方法用于添加动态列,它会向 dynamicColumns 数组中添加一个新的列配置对象。removeColumn 方法用于删除动态列,它会根据索引从 dynamicColumns 数组中移除对应的列配置对象。
这样,你就可以根据需要调用 addColumn 和 removeColumn 方法,来动态改变 el-table 中的列配置,实现固定列和动态新增/删除行的效果。
阅读全文