element-UI表格中多选框回显默认选中问题

废话不多说 直接上代码和示例图!!

<template>
  <div class="home">
    <template>
      <el-table
        ref="multipleTable"
        :data="tableData"
        tooltip-effect="dark"
        style="width: 100%"
        @selection-change="handleSelectionChange">
        <el-table-column
          type="selection"
          width="55">
        </el-table-column>
        <el-table-column
          label="日期"
          width="120">
          <template slot-scope="scope">{{ scope.row.date }}</template>
        </el-table-column>
        <el-table-column
          prop="name"
          label="姓名"
          width="120">
        </el-table-column>
        <el-table-column
          prop="address"
          label="地址"
          show-overflow-tooltip>
        </el-table-column>
      </el-table>
      <div style="margin-top: 20px">
        <el-button @click="toggleSelection([tableData[1], tableData[2]])">切换第二、第三行的选中状态</el-button>
        <el-button @click="toggleSelection()">取消选择</el-button>
      </div>
</template>
  </div>
</template>

<script>



export default {
  data() {
      return {
        tableData: [{
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-08',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-06',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-07',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }],
        multipleSelection: []
      }
    },
    methods: {
        toggleSelection(rows) {
          if (rows) {
            rows.forEach(row => {
              this.$refs.multipleTable.toggleRowSelection(row);
            });
          } else {
            this.$refs.multipleTable.clearSelection();
          }
        },
        handleSelectionChange(val) {
          this.multipleSelection = val;
        }
      }
}
</script>

 

以上代码是element UI在官方文档中为我们提供的一个多选框tabl表格,通过@click="toggleSelection([tableData[1], tableData[2]])来实现对tableData[1]和tableData[2]来实现选中。

要实现页面加载即可回显选中数据,只需要在mounted(){}函数中实现此步骤即可(若有其他需求则在其他函数中)。

      

<template>
  <div class="home">
    <template>
      <el-table
        ref="multipleTable"
        :data="tableData"
        tooltip-effect="dark"
        style="width: 100%"
        @selection-change="handleSelectionChange">
        <el-table-column
          type="selection"
          width="55">
        </el-table-column>
        <el-table-column
          label="日期"
          width="120">
          <template slot-scope="scope">{{ scope.row.date }}</template>
        </el-table-column>
        <el-table-column
          prop="name"
          label="姓名"
          width="120">
        </el-table-column>
        <el-table-column
          prop="address"
          label="地址"
          show-overflow-tooltip>
        </el-table-column>
      </el-table>
      
</template>
  </div>
</template>

<script>



export default {
  name:"HomeView",
  data() {
      return {
        tableData: [{
          id:1,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id:2,
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id:3,
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id:4,
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id:5,
          date: '2016-05-08',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id:6,
          date: '2016-05-06',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id:7,
          date: '2016-05-07',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }],
        multipleSelection: [],
        arr:[
          1,3,5
        ]

      }
    },
    methods: {
        
      },
      mounted(){
        //循环tableData(所有数据)
          this.tableData.forEach((row)=>{
            //循环arr(需要回显的数据的id)
            this.arr.forEach((id)=>{
              // 当tableDate[i]的id等于需要回显的数据的id时,选中此条数据
              if(row.id===id){
                this.$refs.multipleTable.toggleRowSelection(row,true);
              }
            })

          }
          )
      }
}
</script>

运行结果如下:页面加载完成默认选中id为1,3,5的数据

 

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`el-table` 是 Element UI 提供的一个用于展示表格的组件,它提供了丰富的功能,包括列宽调整、分页、排序、搜索以及数据回显等。关于复选框选中回显问题,通常是在表格添加了 `selection` 属性,用来管理选中的行,并希望用户操作(如点击选中/取消选中)后,状态能够保存并在页面刷新或重新加载数据后依然保持原选状态。 具体实现步骤如下: 1. 在 `el-table` 的配置启用选择模式: ```html <el-table :data="tableData" :selection="selectedRows"> ... </el-table> ``` 这里,`:selection="selectedRows"` 是绑定一个数组,存储选中的行数据。 2. 设置 `row-key`,确保每个数据项都有唯一的标识,以便在数据发生变化时可以正确地更新选中状态: ```html <el-table :data="tableData" :selection="selectedRows" :row-key="rowKey"> ... </el-table> ``` 3. 保存选中状态到数据源或Vuex、localStorage等持久化存储: ```javascript // 在获取数据或刷新页面之前,检查并设置选中行 loadData() { this.selectedRows = localStorage.getItem('selectedRows') || []; // 加载数据 } // 在数据改变后,保存选中行到持久化存储 handleSelectChange(rows) { localStorage.setItem('selectedRows', rows.map(row => row.id)); // 假设id作为唯一的标识 } ``` 4. 针对表格的数据回显,确保在数据加载时将之前保存的选中状态还原到对应的行。 这样,当你再次打开页面时,只要数据结构不变,用户之前的选中状态就会被正确地复现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值