发布时间:2024-01-20 08:00
header-cell-style方法是改变表格头部样式的内置属性,可以配置表头的样式
:header-cell-style="{ background: '#f3f6fd', color: '#555' }"
<el-table-column type="selection"> </el-table-column>
当el-table增加改属性后会增加全选功能,需求是将表头中的全选框取消,下面的css代码需要放在App.vue中。在组件的style中不生效
.el-table__header .el-table-column--selection {
visibility: hidden;
background: red !important;
z-index: 99999;
}
.el-table__header-wrapper {
background: #f3f6fd;
}
li {
list-style: none;
}
当设置type="selection"属性时,ui默认是可以多选的,需求是table单选,
<el-table
ref="multipleTable"
:data="tableData"
@selection-change="selectionChange"
@select="select"
tooltip-effect="dark"
style="width:100%;height:80%;overflow: auto;"
:header-cell-style="{ background: '#f3f6fd', color: '#555' }"
>
当表格要实现互斥单选功能是,需要使用内置的selection-change和select事件前者为:当选择项发生变化时会触发该事件;后者为:当用户手动勾选数据行的 Checkbox 时触发的事件
select(selection, row) {
// 清除 所有勾选项
this.$refs.multipleTable.clearSelection();
// 当表格数据都没有被勾选的时候 就返回
// 主要用于将当前勾选的表格状态清除
if (selection.length == 0) return;
this.$refs.multipleTable.toggleRowSelection(row,true);
},
// 表格的选中 可以获得当前选中的数据
selectionChange(val) {
// 将选中的数据存储起来
console.log(val)
//这里输出的数组当第一次选择的时候数组为一项,当多次选择之后数组中为两项,其中第二项为选中的值
//这里可以根据输出的值的数组长度来拿到最新选择的值
},
toggleRowSelection用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
toggleSelection(rows) {
if (rows) {
rows.forEach(row => {
this.$refs.multipleTable.toggleRowSelection(this.tableData.find(v=>v.scenario_id==row.scenario_id),true);
});
} else {
this.$refs.multipleTable.clearSelection();
}
},
在表格渲染的请求方法的回调中 使用
当做了单选操作存储的数组只有一项时
let rows=JSON.parse(window.sessionStorage.getItem("sceneTion"))
if(rows!=null){
this.datarows.push(rows)
this.$nextTick(()=>{
this.toggleSelection(this.datarows)
})
当没有做互斥单选操作,此时需要在请求到的数组中拿出勾选的数组this.tableData.filter过滤拿到的是available==ture表示被勾选状态
let rows= this.tableData.filter(v=>v.available==true)
// if()
if(rows!=null){
this.datarows=rows
this.$nextTick(()=>{
this.toggleSelection(this.datarows)
})
}
this.$nextTick表示在页面渲染完成时执行,如果不用在页面加载完成时效果不生效。
el-table标签中加入select事件
@select="handleSelectionChange"
//勾选
handleSelectionChange(rows, row) {
let selected = rows.length && rows.indexOf(row) !== -1
// console.log(selected) // true就是选中,0或者false是取消选中
},