请问el-table,我想点击不同的表头可以让表头改变颜色,并且可以获取这列数据,并且前6个表头还不能点击,这个请问谁知道怎么做么
时间: 2023-08-07 09:04:15 浏览: 67
可以通过以下步骤实现:
1. 在el-table中给需要可点击的表头添加特殊的class,例如`clickable-header`。
2. 使用`header-cell-style`属性来为表头单元格设置样式,例如改变背景色。
3. 为可点击的表头单元格绑定点击事件,通过事件触发来获取对应的列数据。
4. 通过`v-if`指令控制前6个表头是否可点击。
下面是一个示例代码,仅供您参考:
```html
<template>
<el-table :data="tableData" border>
<el-table-column v-if="showClickable(0)" label="姓名" prop="name" header-cell-class-name="clickable-header" :header-cell-style="{backgroundColor: headerBgColor(0)}" @header-click="handleHeaderClick(0)"></el-table-column>
<el-table-column v-if="showClickable(1)" label="年龄" prop="age" header-cell-class-name="clickable-header" :header-cell-style="{backgroundColor: headerBgColor(1)}" @header-click="handleHeaderClick(1)"></el-table-column>
<el-table-column v-if="showClickable(2)" label="性别" prop="gender" header-cell-class-name="clickable-header" :header-cell-style="{backgroundColor: headerBgColor(2)}" @header-click="handleHeaderClick(2)"></el-table-column>
<el-table-column v-if="showClickable(3)" label="职业" prop="job" header-cell-class-name="clickable-header" :header-cell-style="{backgroundColor: headerBgColor(3)}" @header-click="handleHeaderClick(3)"></el-table-column>
<el-table-column v-if="showClickable(4)" label="城市" prop="city" header-cell-class-name="clickable-header" :header-cell-style="{backgroundColor: headerBgColor(4)}" @header-click="handleHeaderClick(4)"></el-table-column>
<el-table-column v-if="showClickable(5)" label="国籍" prop="nationality" header-cell-class-name="clickable-header" :header-cell-style="{backgroundColor: headerBgColor(5)}" @header-click="handleHeaderClick(5)"></el-table-column>
<el-table-column label="个人简介" prop="intro"></el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: '张三', age: 18, gender: '男', job: '工程师', city: '北京', nationality: '中国', intro: '我是一名工程师' },
{ name: '李四', age: 25, gender: '女', job: '产品经理', city: '上海', nationality: '中国', intro: '我是一名产品经理' },
{ name: '王五', age: 30, gender: '男', job: '设计师', city: '广州', nationality: '中国', intro: '我是一名设计师' }
],
clickableCols: ['name', 'age', 'gender', 'job', 'city', 'nationality'],
clickedColIndex: -1
}
},
methods: {
showClickable(index) {
// 控制前6个表头是否可点击
return this.clickableCols.includes(this.tableColumns[index].prop) && index >= 6;
},
headerBgColor(index) {
// 根据点击状态改变表头背景色
if (index === this.clickedColIndex) {
return '#409EFF';
} else {
return '';
}
},
handleHeaderClick(index) {
// 处理表头点击事件
this.clickedColIndex = index;
const prop = this.tableColumns[index].prop;
const data = this.tableData.map(item => item[prop]);
console.log(`Clicked column "${prop}", data:`, data);
}
}
}
</script>
```
阅读全文