elementUI中table表格添加一列多选框(vue)

梦里梦外; 2022-11-26 08:56 1510阅读 0赞

效果图如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkzMTgyNQ_size_16_color_FFFFFF_t_70在elementUI中使用多选框checkbox在表格中有两种方法,第一种就像上图中第一列多选框一样,只需在elementUI中table的一列设置一个属性type=”selection”即可,如下:

  1. <el-table
  2. :data="tableData"
  3. :current-page.sync="currentPage"
  4. @selection-change="handleSelectionChange"
  5. style="width: 100%;" class="" ref="taskTable">
  6. <el-table-column
  7. type="selection"
  8. width="55">
  9. </el-table-column>
  10. </el-table>

但是单独的一列多选框需要和这列多选框进行区分,所以需要单独设置如下:

  1. <el-table-column width="55" label="是否删除" >
  2. <template slot-scope="scope">
  3. <el-checkbox v-model="tableData[scope.$index].isDelete" @change="selectRadio(scope.$index,scope.row)" :disabled="tableData[scope.$index].disabled"></el-checkbox>
  4. </template>
  5. </el-table-column>

也就是上图红色框的范围区域多选框,因为是和vue一起写的,所以适应v-model进行绑定,数据和多选框勾选方法展示如下:

  1. data(){
  2. return:{
  3. tableData:[]
  4. }
  5. },
  6. method:(){
  7. //多选框选中方法
  8. selectRadio(index,row){
  9. },
  10. //获取数据的方法
  11. getData () {
  12. axios.post('/admin/decops/getTasks', {
  13. currentPage:this.currentPage,
  14. pagesize:this.pagesize,
  15. filter:this.formOne
  16. }).then(res => {
  17. this.tableData = res.data.tasks;
  18. this.formDataOne = res.data.selData;
  19. var Arr = this.tableData;
  20. this.getAdd(Arr);
  21. this.count = res.data.count;
  22. })
  23. },
  24. //给表格数据添加一列默认多选框的选中值数据
  25. getAdd(arr){
  26. var that = this;
  27. arr.forEach(function(item,index,array){
  28. that.$set(arr[index],'isDelete',false)
  29. });
  30. return arr
  31. },
  32. }

使用$set方法向接口返回的表格数据中添加一个属性isDelete,从而实现进行数组数据刷新,使得页面展示刷新。如下

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkzMTgyNQ_size_16_color_FFFFFF_t_70 1

但是这是有了一个问题,就是我点击第一列多选框选中的时候,修改是否删除这一列,第一列多选框框中的数据不会改变,为了防止数据传递错误,我想了一个方法,当选中第一列多选框的时候,使得是否删除这一列的多选框无法选中,实现方法如下:

  1. // 第一列多选框选中事件
  2. handleSelectionChange(val) {
  3. this.multipleSelection = val;
  4. if(val.length == 0){
  5. this.updateDisable(this.tableData);
  6. }else{
  7. this.updateDisable(this.tableData,true);
  8. }
  9. },
  10. //是否禁用多选框
  11. updateDisable(Arr,type){
  12. var that = this;
  13. if(type){
  14. Arr.forEach(function(item,index,array){
  15. that.$set(Arr[index],'disabled',type)
  16. });
  17. }else{
  18. Arr.forEach(function(item,index,array){
  19. that.$set(Arr[index],'disabled',false)
  20. });
  21. }
  22. return Arr
  23. }

给表格数据每一列多选框增加一个disabled属性,通过第一列的勾选事件进行控制传递值type,从而进行控制是否删除这一列多选框是否禁用。

效果图如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkzMTgyNQ_size_16_color_FFFFFF_t_70 2

发表评论

表情:
评论列表 (有 0 条评论,1510人围观)

还没有评论,来说两句吧...

相关阅读