el-table 表格多列单选框 全列只能选一个
时间: 2023-12-01 12:58:56 浏览: 110
可以通过设置 el-table 的 selection-change 事件来限制表格多列单选框,使其在全列只能选一个。
具体步骤如下:
1. 在 el-table 上添加 :selectable="selectionFn" 属性,其中 selectionFn 为一个函数,用于判断当前行是否可选。
2. 在 data 中添加一个变量 selectedRow,用于保存当前选中的行。
3. 在 selection-change 事件中,判断当前选中的行是否已经被选中,如果是,则将其设为 null,否则将其设为选中的行。
示例代码如下:
```html
<template>
<div>
<el-table :data="tableData" :selectable="selectionFn" @selection-change="handleSelectionChange">
<el-table-column type="selection"></el-table-column>
<el-table-column prop="name" label="Name"></el-table-column>
<el-table-column prop="age" label="Age"></el-table-column>
<el-table-column prop="address" label="Address"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: 'John', age: 18, address: 'New York' },
{ name: 'Mike', age: 20, address: 'London' },
{ name: 'Tom', age: 22, address: 'Paris' }
],
selectedRow: null
};
},
methods: {
selectionFn(row) {
// 判断当前行是否可选
return row.age >= 18;
},
handleSelectionChange(selection) {
if (selection.length > 0) {
// 只能选中一行,清除已选中的行
if (this.selectedRow && selection[0].age !== this.selectedRow.age) {
this.$refs.table.clearSelection();
this.selectedRow = null;
} else {
this.selectedRow = selection[0];
}
} else {
this.selectedRow = null;
}
}
}
};
</script>
```
在上述示例中,我们通过 selectionFn 函数来限制只有年龄大于等于 18 岁的行才能被选中。在 handleSelectionChange 方法中,我们判断当前选中的行是否已经被选中,如果是,则将其设为 null,否则将其设为选中的行。如果已经选中了一行,并且当前选中的行与已选中的行不一致,那么就清除已选中的行,然后将当前选中的行设为已选中的行。
阅读全文