el-table中添加shift 多选和单击滑动多选

<el-table
ref="table"
@mousedown.native="mousedownTable"
@row-click="row_click"
@cell-mouse-enter="cell_mouse_enter"
@cell-mouse-leave="cell_mouse_leave"
@mouseup.native="mouseupTable"
@mouseleave.native="mouseupTable"
>

</el-table>
data(){
        lastSelectedRow:null, //  shift选中
      isMousedownTable: false, //是否按下表格
      currentEnterRow: null, //当前移入的行数据
}
methods:{
    
mousedownTable(d) {
      this.currentEnterRow &&
        !this.currentEnterRow.disabled 
      this.isMousedownTable = true;
    },
    // 单击表格行
    row_click(row, column, event) {
      if (event.shiftKey) {
        const startIndex = this.dataSource.indexOf(this.lastSelectedRow)
        const endIndex = this.dataSource.indexOf(row)
        console.log(startIndex,endIndex,'endIndex')
        const inBetween = (startIndex >= 0 && endIndex >= 0) && (startIndex <= endIndex);
        console.log(inBetween,'inb')
        if (inBetween) {
          for (let i = startIndex+1; i <= endIndex; i++) {
            console.log(this.dataSource[i],'this.dataSource[i]')
            this.$refs.table.toggleRowSelection([{row:this.dataSource[i],type:'true'}])
          }
        }
      }else{
         this.$refs.table.toggleRowSelection([{row:row,type:'true'}])
      }
      this.lastSelectedRow = row;
    },
    // 进入单元格
    cell_mouse_enter(row, column, cell, event) {
      this.isMousedownTable && !row.disabled && this.$refs.table.toggleRowSelection([{row:row,type:'true'}]);
      this.currentEnterRow = row;
    },
    // 离开单元格
    cell_mouse_leave(row, column, cell, event) {
      this.currentEnterRow = null;
    },
    // 鼠标弹起或者离开表格
    mouseupTable(d) {
      this.isMousedownTable = false;
    },
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤实现el-table的跨页多选: 1. 在el-table添加selection属性,用于存储选的行数据。 2. 在el-table-column添加type属性,设置为selection,用于显示复选框。 3. 在el-pagination添加@current-change事件,用于监听分页器的页码变化。 4. 在@current-change事件,判断当前页是否为第一页,如果是,则将选的行数据存储到selection;如果不是,则将选的行数据追加到selection。 5. 在el-table添加@select-all事件,用于全选当前页的数据。 6. 在@select-all事件,判断当前页是否为第一页,如果是,则将当前页的所有数据存储到selection;如果不是,则将当前页的所有数据追加到selection。 以下是示例代码: ``` <template> <div> <el-table :data="tableData" :row-key="row => row.id" @select-all="handleSelectAll"> <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> <el-pagination :total="total" :page-size="pageSize" @current-change="handlePageChange"></el-pagination> </div> </template> <script> export default { data() { return { tableData: [], selection: [], total: 0, pageSize: 10, currentPage: 1 } }, methods: { handlePageChange(currentPage) { if (currentPage === 1) { this.selection = [] } this.currentPage = currentPage }, handleSelectAll(selection) { if (this.currentPage === 1) { this.selection = selection } else { this.selection = this.selection.concat(selection) } } } } </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值