layui数据表格设置复选框回显

一.需求

        点击分配按钮,出现弹窗,弹窗里面是个带分页的数据表格,表格第一列是复选框。需要根据点击按钮时传过来的id对表格数据做筛选判断,如果跟表格里面的数据id跟传过来的id一样,则对应行的复选框勾选。

二.效果图

 

 三.做法

测试了网上很多方法,比如在数据表格的done里面做判断,给对应的inputclick事件、给对应的input加样式等等都不行。后来发现数据表格里的done其实是表格渲染后的回调,表格都渲染好了,再去操作当然没效果。于是想到了在表格渲染前去发请求,获取数据,对数据进行遍历判断手动加上LAY_CHECKED = true;然后把处理后的数据拿去渲染数据表格即可。

四.代码

$.ajax({
            type: 'post',
            url: '',    //此处填写请求路径
            data: JSON.stringify({    //此处为请求时携带的参数
              pageNo: 1,
              pageSize: 9999,
              sorting: 'id desc',
            }),
            success: function (result) {
              //关键---判断是否跟课程分类id相同,相同代表已分配,设置复选框勾选
              for (let i = 0; i < result.data.data.length; i++) {
                if (result.data.data[i].classId == paramesUrl.id) {
                  result.data.data[i].LAY_CHECKED = true;
                }
              }

              table.render({    
                elem: '#dataGrid',
                id: 'dataGridReload',    
                height: 'full-50',
                data: result.data.data,    //拿到处理后的数据去渲染表格
                page: {
                  layout: ['prev', 'page', 'next', 'count', 'skip'],
                  hash: 'cur',
                  curr: location.hash.replace('#!cur=', ''), //重新从第 1 页开始
                }, //开启分页
                request: {
                  pageName: 'pageNo', //页码的参数名称,默认:page
                  limitName: 'pageSize', //每页数据量的参数名,默认:limit
                },
                parseData: function (res) {
                  //res 即为原始返回的数据
                  return {
                    code: res.code, //解析接口状态
                    msg: res.message, //解析提示文本
                    count: res.data.total, //解析数据长度
                    data: res.data.data, //解析数据列表
                    pageName: res.data.pageNo, //页码的参数名称,默认:page
                    limitName: 1, //每页数据量的参数名,默认:limit
                  };
                },
                response: {
                  statusName: 'code', //规定数据状态的字段名称,默认:code
                  statusCode: '200', //规定成功的状态码,默认:0
                  msgName: 'msg', //消息字段
                  countName: 'count', //规定数据总数的字段名称,默认:count
                  dataName: 'data', //规定数据列表的字段名称,默认:data
                },
                cols: [
                  [
                    //表头
                    {
                      title: '',
                      field: '',
                      width: 80,
                      align: 'center',
                      type: 'checkbox',
                    },
                    {
                      title: '学员名称',
                      field: 'username',
                      minWidth: 200,
                      align: 'center'
                    },
                    {
                      title: '真实姓名',
                      field: 'realName',
                      minWidth: 200,
                      align: 'center',
                    },
                    {
                      title: 'ss',
                      field: 'classId',
                      minWidth: 100,
                      align: 'center',
                    },
                    {
                      title: '身份证号',
                      field: 'identityCard',
                      minWidth: 200,
                      align: 'center',
                    },
                    {
                      title: '手机号码',
                      field: 'mobile',
                      minWidth: 200,
                      align: 'center',
                    },
                  ],
                ],
              });

              //以下为复选框的相关操作
              table.on('checkbox(dataGrid)', function (obj) {
                console.log(obj); //当前行的一些常用操作集合
                console.log(obj.checked); //当前是否选中状态
                console.log(obj.data); //选中行的相关数据
                console.log(obj.type); //如果触发的是全选,则为:all,如果触发的是单选,则        
                为:one
              });
            },
          });

五.注意事项

1.table.render中有了data就不要去用url了,会冲突

2.这样的作法有个坏处就是,第一次请求需要请求所有数据,如果数据过多,性能会不好。希望有其他办法的大佬可以留言或者私信我,让我学习以下,非常感谢。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在 el-table 中使用复选框,并且在编辑页面中回显已选中的选项,可以通过以下步骤实现: 1. 在 el-table-column 中添加 type 属性为 "selection",并绑定 v-model 到一个数组中,用于存储选中的数据。 ``` <el-table-column type="selection" :selectable="row => !row.disabled" v-model="selectedRows"></el-table-column> ``` 2. 在数据源中添加一个属性用于标记该行数据是否已选中,例如 selected。 ``` [ { name: 'John', age: 18, selected: true }, { name: 'Bob', age: 22, selected: false }, { name: 'Alice', age: 20, selected: true } ] ``` 3. 在编辑页面中,将选中的数据传递给 el-table 的 selected 属性,并将数据源中 selected 属性为 true 的数据渲染为已选中状态。 ``` <el-table :data="tableData" :selected="selectedRows"> <el-table-column prop="name" label="Name"></el-table-column> <el-table-column prop="age" label="Age"></el-table-column> <el-table-column type="selection" :selectable="row => !row.disabled" v-model="selectedRows"></el-table-column> </el-table> <el-button @click="editSelected">Edit Selected</el-button> <script> export default { data() { return { tableData: [ { name: 'John', age: 18, selected: true }, { name: 'Bob', age: 22, selected: false }, { name: 'Alice', age: 20, selected: true } ], selectedRows: [] } }, methods: { editSelected() { // 处理选中的数据 console.log(this.selectedRows); } } } </script> ``` 这样就能实现 el-table 表格复选框回显的功能了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值