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

效果图如下:

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

<el-table
   :data="tableData"
   :current-page.sync="currentPage"
   @selection-change="handleSelectionChange"
   style="width: 100%;" class="" ref="taskTable">
   <el-table-column
       type="selection"
       width="55">
   </el-table-column>
</el-table>

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

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

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

data(){
    return:{
        tableData:[]
    }
},
method:(){
    //多选框选中方法
    selectRadio(index,row){
                
    },
    //获取数据的方法
    getData () {
       axios.post('/admin/decops/getTasks', {
          currentPage:this.currentPage,
          pagesize:this.pagesize,
          filter:this.formOne
       }).then(res => {
          this.tableData = res.data.tasks;
          this.formDataOne = res.data.selData;
          var Arr = this.tableData;
          this.getAdd(Arr);
          this.count = res.data.count;
       })
    },
    //给表格数据添加一列默认多选框的选中值数据
    getAdd(arr){
        var that = this;
        arr.forEach(function(item,index,array){
           that.$set(arr[index],'isDelete',false)
        });
        return arr
    },
}

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

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

// 第一列多选框选中事件
handleSelectionChange(val) {
    this.multipleSelection = val;
    if(val.length == 0){
        this.updateDisable(this.tableData);
    }else{
        this.updateDisable(this.tableData,true);
    }
},
//是否禁用多选框
updateDisable(Arr,type){
    var that = this;
    if(type){
        Arr.forEach(function(item,index,array){
            that.$set(Arr[index],'disabled',type)
        });
    }else{
        Arr.forEach(function(item,index,array){
            that.$set(Arr[index],'disabled',false)
        });
    }
    return Arr
}

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

效果图如下:

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以在表格的列定义添加一个多选框列,示例代码如下: ```html <template> <el-table :data="tableData" style="width: 100%"> <el-table-column type="selection"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </template> ``` 在这个例子,我们在列定义添加了一个 `type="selection"` 的列,这个列会在表格的左侧显示一个多选框,用户可以通过选多选框来选择表格的行。注意,这个列的 `prop` 属性没有定义,因为它不会显示任何数据,只是用来实现多选框的功能。 另外,需要注意的是,在使用多选框列的时候,需要在表格组件上添加 `@selection-change` 事件监听器来处理用户的选择操作: ```html <template> <el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange"> <!-- 列定义 --> </el-table> </template> <script> export default { data() { return { tableData: [ // 表格数据 ], selectedRows: [] // 保存用户选择的行 }; }, methods: { handleSelectionChange(selection) { // 更新用户选择的行 this.selectedRows = selection; } } }; </script> ``` 在这个例子,我们定义了一个 `selectedRows` 数组来保存用户选择的行,然后在 `@selection-change` 事件监听器更新这个数组。你可以在监听器执行任意的操作,比如更新表格的数据、发送请求等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值