定制设计element-ui table使用type=‘selection‘复选框全禁用-全选禁用

目录


问题总结: 定制设计当条件数据全被禁用时,定制设计全选按钮也变成禁用的状态,定制设计而不是隐藏。定制设计有会做的小伙伴希望跟帖。谢谢!

定制设计复选框框架:通过调用selectable方法,定制设计进行禁用复选框。

  1. <!-- 复选框禁用 -->
  2. <el-table
  3. v-loading="loading"
  4. :data="studentList"
  5. @selection-change="handleSelectionChange"
  6. >
  7. <el-table-column
  8. type="selection"
  9. width="55"
  10. align="center"
  11. :selectable="selectable"
  12. />
  13. <el-table-column label="编号" align="center" prop="studentId" />

1.指定行禁用:

  1. //复选框禁用
  2. selectable(row,rowIndex) {
  3. //索引是从0开始,条件1是指只有第2行数据不被禁用
  4. if(rowIndex == 1){
  5. return true; //不禁用
  6. }else {
  7. return false; //禁用
  8. }
  9. }

效果:

2.条件禁用:

  1. //复选框禁用
  2. selectable(row,rowIndex) {
  3. //只有姓名【zhang】不被禁用
  4. if (row.studentName == "zhang") {
  5. return true; //不禁用
  6. }else {
  7. return false; //禁用
  8. }
  9. }

效果:

问题点:当条件数据全被禁用时,全选按钮不是禁用的状态。

  1. //复选框全部禁用
  2. selectable(row,rowIndex) {
  3. return false;
  4. }

效果:

复选框全被禁用时,全选按钮将被隐藏 

回避做法:加了一个:header-cell-class-name属性,通过调用cellClass方法,当全被禁用时,全选按钮将被隐藏。

  1. <!-- 复选框禁用 -->
  2. <el-table
  3. v-loading="loading"
  4. :data="studentList"
  5. :header-cell-class-name="cellClass"
  6. @selection-change="handleSelectionChange"
  7. >
  8. <el-table-column
  9. type="selection"
  10. width="55"
  11. align="center"
  12. :selectable="selectable"
  13. />
  14. <el-table-column label="编号" align="center" prop="studentId" />

实现:定义一个参数DisableSelection:true,实现全选禁用。

  1. export default {
  2. name: "Student",
  3. data() {
  4. return {
  5. // 全选按钮隐藏
  6. DisableSelection:true,
  7. }
  8. }
  9. }

追加全选按钮的隐藏样式:

  1. <style>
  2. .el-table .DisableSelection .cell .el-checkbox__inner{
  3. display: none;
  4. position: relative;
  5. }
  6. .el-table .DisableSelection .cell:before{
  7. content: "";
  8. position: absolute;
  9. }
  10. </style>

追加全选按钮隐藏函数cellClass,启用隐藏样式:

  1. //全选按钮隐藏
  2. cellClass(row){
  3. row.length
  4. console.log(row)
  5. if(this.DisableSelection){
  6. if (row.columnIndex === 0) {
  7. return 'DisableSelection'
  8. }
  9. }
  10. },

复选框当存在不禁用时,重置DisableSelection属性值:

  1. //复选框禁用
  2. selectable(row,rowIndex) {
  3. //所有行都被禁用
  4. if(rowIndex < 0){
  5. this.DisableSelection = false && this.DisableSelection;
  6. return true; //不禁用
  7. }else {
  8. return false; //禁用
  9. }
  10. },

效果:全被禁用时,全选按钮被隐藏

 存在可选按钮场合:前两行可选。

  1. //复选框禁用
  2. selectable(row,rowIndex) {
  3. //前两行可选的状态
  4. if(rowIndex < 2){
  5. this.DisableSelection = false && this.DisableSelection;
  6. return true; //不禁用
  7. }else {
  8. return false; //禁用
  9. }
  10. },

当存在可选时,全选按钮被表示出来

问题总结: 当条件数据全被禁用时,全选按钮也变成禁用的状态,而不是隐藏。有会做的小伙伴希望跟帖。谢谢!

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发