当前位置:   article > 正文

element 表格使用多选框时 如何限制选择数量_el-table 复选框勾选数量限制

el-table 复选框勾选数量限制

问题:在项目中遇见,使用element表格加多选框,需要限制选择数量的情况

解决办法:max就是最多可以选择的条数

  1. <el-table
  2. ref="multipleTable"
  3. v-loading="loading"
  4. :data="tableData"
  5. @selection-change="handleSelectionChange"
  6. @current-change="handleCurrentChange"
  7. row-key="id"
  8. >
  9. <el-table-column
  10. :selectable="selectable"
  11. :reserve-selection="true"
  12. type="selection"
  13. align="center"
  14. />
  1. // 回调表格选择的数据 当选择项发生变化时会触发该事件
  2. handleSelectionChange(list) {
  3. if (list.length > this.max) {
  4. this.limitFn(list);
  5. return;
  6. }
  7. this.multiSelectedGroups = [...list];
  8. },
  9. // 限制数量方法
  10. limitFn(list) {
  11. this.$refs.multipleTable.clearSelection(); //用于多选表格,清空用户的选择
  12. for (let i = 0; i < this.max; i++) {
  13. this.$refs.multipleTable.toggleRowSelection(list[i]); //用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
  14. }
  15. },
  1. // 判断复选框是否可以选择
  2. selectable(row) {
  3. let index = this.multiSelectedGroups.findIndex((v) => v.id === row.id);
  4. return this.multiSelectedGroups.length >= this.max
  5. ? index !== -1
  6. ? true
  7. : false
  8. : true;
  9. },

项目中这一块我是做的一个组件,调用的时候可能传入之前选中的数据,所以需要渲染之前选中的数据。hadSelected是调用组件时传入的默认选择的数据

  1. //用于多选表格 回显的数据 等DOM元素渲染完毕之后再处理回显
  2. if (this.hadSelected.length) {
  3. let idArr = this.hadSelected.map((val) => val.id);
  4. this.$nextTick((res) => {
  5. this.tableData.forEach((val) => {
  6. if (idArr.includes(val.id)) {
  7. this.$refs.multipleTable.toggleRowSelection(val, true);
  8. }
  9. });
  10. });
  11. }

需要注意一下,reserve-selection,仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/103242
推荐阅读
相关标签
  

闽ICP备14008679号