el-table跨表格实现单选、全选

该博客探讨了在Vue.js应用中处理多表格选择的问题。作者遇到的挑战是在取消选择时无法正确清除数据,以及在切换表格时保持已选中的项。解决方案涉及使用store来存储选中项,并通过自定义参数处理全选事件。博客还涉及到了数据操作、事件监听以及如何在组件销毁时清理存储的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

场景:一个页面多个表格,实现跨表格单选多选
实现多选:问题是取消多选的时候数据清空就无法将对应取消的数据给清除掉,然后这里需要给select-all事件增加自定义参数
问题二:切换表格选中会把之前的选的清空,在这里借助store来存一下值
在这里插入图片描述

@select-all="(selection) => { handleSelectAllChange(selection,index )}"
//切换checkbox
handleSelectionChange(list,row) {
      console.log(list,row)

      this.taskList.map((item) => {
        item.taskRequestitemList.map((citem)=>{
          if(this.selectTaskList.length>0){
            let findex=this.selectTaskList.findIndex(
              (a) => a.id == row.id
            )
            if(findex>-1){
              this.selectTaskList.splice(findex, 1);
              this.$store.dispatch('SetSelectTaskList',this.selectTaskList);
            }else{
              this.selectTaskList.push(deepClone(row));
              this.$store.dispatch('SetSelectTaskList',this.selectTaskList);
            }
          }else{
            this.selectTaskList.push(deepClone(row));
            this.$store.dispatch('SetSelectTaskList',this.selectTaskList);
          }
          
        })
        
      });
      this.$emit('getSelectTask',this.selectTaskList)
      console.log('this.selectTaskList',this.selectTaskList)
    },
    //全选
    handleSelectAllChange(list,index){
      console.log(list,index)
      if(list.length==0){
        this.taskList[index].taskRequestitemList.map((item)=>{
            let findex=this.selectTaskList.findIndex(
              (a) => a.id ==item.id
            )
           this.selectTaskList.splice(findex, 1);
        })
        this.$store.dispatch('SetSelectTaskList',this.selectTaskList);
      }else{
        list.map((item)=>{
           this.selectTaskList.push(item);
        })
        this.$store.dispatch('SetSelectTaskList',this.selectTaskList);
      }
       console.log('this.selectTaskList',this.selectTaskList)
      this.$emit('getSelectTask',this.selectTaskList)
    },

store
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选中的任务直接存到store里
注:也有大佬提示说借助缓存,这种方式没有尝试;个人感觉用stroe会更好一点,最后要注意的是页面的销毁的时候注意清掉列表的值
在这里插入图片描述

删除之类操作需要全选功能,方便选择 public class MainActivity extends Activity { private ListView lv; private MyAdapter mAdapter; private ArrayList list; private Button bt_selectall; // private Button bt_cancel; // private Button bt_deselectall; private int checkNum; // 记录选中的条目数量 private TextView tv_show;// 用于显示选中的条目数量 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* 实例化各个控件 */ lv = (ListView) findViewById(R.id.lv); bt_selectall = (Button) findViewById(R.id.bt_selectall); // bt_cancel = (Button) findViewById(R.id.bt_cancelselectall); // bt_deselectall = (Button) findViewById(R.id.bt_deselectall); tv_show = (TextView) findViewById(R.id.tv); list = new ArrayList(); // 为Adapter准备数据 initDate(); // 实例化自定义的MyAdapter mAdapter = new MyAdapter(list, this); // 绑定Adapter lv.setAdapter(mAdapter); // 全选按钮的回调接口 bt_selectall.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 遍历list的长度,将MyAdapter中的map值全部设为true for (int i = 0; i < list.size(); i++) { MyAdapter.getIsSelected().put(i, true); } // 数量设为list的长度 checkNum = list.size(); // 刷新listview和TextView的显示 dataChanged(); } }); // 反选按钮的回调接口 // bt_cancel.setOnClickListener(new OnClickListener() { // @Override // public void onClick(View v) { // // 遍历list的长度,将已选的设为未选,未选的设为已选 // for (int i = 0; i < list.siz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值