layui父页面弹出子页面的表格设置复选框回显勾选

本文介绍了一个使用layui框架实现的父子页面数据交互案例,主要内容包括如何在子页面中选择数据行并在父页面中显示,同时当再次打开子页面时能够回显之前的选择。

情景:
子页面选择行,父页面表格显示,再次打开子页面的时候回显
在这里插入图片描述

父页面:

function selProperty(){
    var propertyData = layui.table.cache["propertyTableReload"];
    var stKey = "pro_ch_app" + Date.parse(new Date()) + Math.round(Math.random() * 10);
    sessionStorage.setItem(stKey, JSON.stringify(propertyData));
    layer.open({
        type: 2,
        title: '资产列表',
        closeBtn: 0,
        //anim: 1,
        shadeClose: true,
        shade: 0.5,
        area: ['900px', '600px'],
        fixed: true, //不固定
        maxmin: true,
        offset: '20px',
        content: encodeURI('/view/.../selProperty?cb=selPropertyConfirm&stKey='+stKey)
    });

弹出子页面:

var stKey = getQueryString("stKey");
if(stKey){
    multipleData = JSON.parse(sessionStorage.getItem(stKey));
}
//表格数据和格式
table.render({
    elem : '#tableName',
    text : {
        none : '暂无相关数据' //默认:无数据。注:该属性为 layui 2.2.5 开始新增
    }, //查询条件 
    defaultToolbar : [],
    height : 'full',
    cellMinWidth : 150,
    url : '/property/query',
    page : { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
        layout : [ 'limit', 'count', 'prev', 'page', 'next', 'skip' ], //自定义分页布局 //,curr: 5 //设定初始在第 5 页 
        groups : 3, //只显示 1 个连续页码 
        first : false, //不显示首页 
        last : false,
        //limit: 10,
    //不显示尾页
    },
    parseData: function(res){
        //表格渲染前就会执行
        if(multipleData.length !== 0){
            res.data.forEach(function(val){
                for(var i=0; i<multipleData.length; i++){
                    if(val["id"] === multipleData[i]["infoId"]){
                        val.LAY_CHECKED = true;
                        break;
                    }
                }
            });
        }
        
        return res;
    },
    done : function(res, curr, count) {
        //表格渲染完后回调
    },
    cols : [ [
        .....
            
    ] ] ,//这里设置ID,搜索时重载该ID的table
    id : 'tableNameReload' 
});
vxe-table表格复选框可以通过以下两种方法实现: ### 方法一:利用配置项 “checkbox-config 和 row-config” 需要在 `vxe-table` 组件中配置 `row-config` 的 `keyField` 用于标识每一行的唯一键,同时将 `checkbox-config` 的 `reserve` 属性设置为 `true`,以保留选中的数据。 示例代码如下: ```html <vxe-table ref="tableRef" :header-cell-style="{ 'text-align': 'center', backgroundColor: '#F2F2F2', color: '#000000' }" :cell-style="{ 'text-align': 'center', color: '#000000' }" height="500" min-height="48px" :data="data" border stripe resizable @checkbox-change="handleSelectionChange" @checkbox-all="selectAllCheckboxChange" style="width: 97%; margin: 0 auto" @cell-click="rowClick" :seq-config="{ seqMethod }" :row-config="{ keyField: 'id' }" :checkbox-config="{ reserve: true }" > <vxe-column type="checkbox" width="55" /> <vxe-column title="序号" type="seq" align="center" width="60" /> </vxe-table> ``` ### 方法二:使用 `setCheckboxRow` API 先获取表格数据,然后在 `$nextTick` 中查找需要选中的行,并使用 `setCheckboxRow` API 设置该行的选中状态。 示例代码如下: ```javascript /** 获取table的数据 */ async getTableData() { const { data: res } = await http.get("/api/list"); if (res.code !== 200) return; this.tableList = res.data; // 选中表格项 this.$nextTick(() => { const row = this.tableList.find((item) => item.id === this.selectedId); if (row) { this.$refs.xTable.setCheckboxRow(row, true); } }); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值