zoukankan      html  css  js  c++  java
  • 使用lauyi-table的复选框选中行的id记录与还原选中项

    1,首先开启复选框,即在cols中加入一列{ type: 'checkbox', align: 'left', unresize: true, 70, }

    2,声明一个全局变量var shopIds=[],用来保存复选框选中行的id数据,(还原页面数据的时候,直接将后台返回的选中的id数据转变成数组赋值给shopIds

    3,在layui-table的数据加载完成后的回调函数里还原复选框选中;

    done: function (res, curr, count) {
                            // 表头颜色
                            $('th').css({ 'background-color': '#F5F5F5', 'color': '#112222', 'font-weight': 'bold' });
                            if (!isSearchClick) {
                                $('.shop.modal-backdrop').show();
                                $('.shop.modal').show();
                            }
    //以下是重点
                            table_data = res.data;
                            for (var i = 0; i < shopIds.length; i++) {//还原选中项
                                var item = shopIds[i];
    //给一行数据中的某列或者某个标签一个ID,指为我们这行数据的id
                                $('#' + item + '').parents('tr').find('.layui-unselect.layui-form-checkbox').addClass('layui-form-checked');
                                $('#' + item + '').parents('tr').find('input[type="checkbox"]').prop('checked', true);
                            }
                        }

    4,监听复选框按钮的选中事件,

    table_data为table当前页的数据
    //复选框选中事件                                
                    table.on('checkbox(shopList)', function (obj) {
                        if (obj.checked == true) {
                            if (obj.type == 'one') {
                                shopIds.push(obj.data.ShopID);
                            } else { //全选
                                for (var i = 0; i < table_data.length; i++) {
                                    shopIds.push(table_data[i].ShopID);
                                }
                            }
                        } else {
                            if (obj.type == 'one') {
                                for (var i = 0; i < shopIds.length; i++) {
                                    if (shopIds[i] == obj.data.ShopID) {
                                        // ids.remove(i);用这个方法会报错not a function 
                                        shopIds.pop();   //建议用这个 
                                        shopIds.splice(i, 1);
                                    }
                                }
                            } else { //全选
                                for (var i = 0; i < shopIds.length; i++) {
                                    for (var j = 0; j < table_data.length; j++) {
                                        if (shopIds[i] == table_data[j].ShopID) {
                                            // ids.remove(i); 
                                            shopIds.pop();
                                            shopIds.splice(i, 1);
                                        }
                                    }
                                }
                            }
                        }
                        console.log(shopIds);
                        console.log(table_data);
                    });

    OK,到此就完成了复选框选中项纪录与还原选中项的问题

    下面是完整的table异步加载代码

     layui.use(['laypage', 'table'], function () {
                    var table = layui.table;
                    table.render({
                        elem: '#shopList',
                        height: 500,
                        //668,
                        cellMinWidth: 40,//最小宽度, 宽度自适应
                        url: '/Ajax/Shop.ashx', //数据接口
                        where: { //接口的其它参数
                            act: 'getShopPage',
                            adminid: adminId,
                            paymentid: paymentId,
                            keyword: $('.modal.shop input[name="searchKey"]').val()//关键字(目前支持商家名称、联系电话、联系人)的模糊检索
                        },
                        skin: 'line',
                        method: 'get', //如果无需自定义HTTP类型,可不加该参数
                        limit: 10,
                        limits: [10, 20],
                        //pageindex: num,
                        response: {
                            countName: 'recordCount' //规定数据总数的字段名称,默认:count
                        },
                        request: {
                            pageName: 'pageindex' //页码的参数名称,默认:page
                            , limitName: 'pagesize', //每页数据量的参数名,默认:limit                       
                        },
                        page: {
                            curr: 1, //设定初始在第 1 页
                            groups: 10,//只显示多个连续页码
                        },
                        cols: [[
                            { type: 'checkbox', align: 'left', unresize: true,  70, }
                            , { type: 'numbers', title: '序号',  70, align: 'left', unresize: true }
                            , {
                                field: 'ShopName',  159, title: '门店名称', templet: "#headImage", align: 'left', unresize: true, templet: function (item) {
    
                                    return '<div class="oneElem" title="' + item.ShopName + '" id="' + item.ShopID + '">' + item.ShopName + '</div>';
                                }
                            }
                            , { field: 'Contact',  100, title: '门店联系人', align: 'left', unresize: true }
                            , { field: 'Phone',  100, title: '联系电话', align: 'left', unresize: true }
                            , {
                                field: 'Address',  150, title: '地址', align: 'left', unresize: true, templet: function (item) {
    
                                    return '<div class="oneElem" title="' + item.Province + item.City + item.Area + item.Address + '">' + item.Province + item.City + item.Area + item.Address + '</div>';
                                }
                            }
                        //, { title: '操作', align: 'left',  89, toolbar: '#barDemo', unresize: true }
    
                        ]],
                        page: true, //开启分页  
                        done: function (res, curr, count) {
                            // 表头颜色
                            $('th').css({ 'background-color': '#F5F5F5', 'color': '#112222', 'font-weight': 'bold' });
                            if (!isSearchClick) {
                                $('.shop.modal-backdrop').show();
                                $('.shop.modal').show();
                            }
                            table_data = res.data;
                            for (var i = 0; i < shopIds.length; i++) {//还原选中项
                                var item = shopIds[i];
                                $('#' + item + '').parents('tr').find('.layui-unselect.layui-form-checkbox').addClass('layui-form-checked');
                                $('#' + item + '').parents('tr').find('input[type="checkbox"]').prop('checked', true);
                            }
                        }
                    });
    
                    //复选框选中事件                                
                    table.on('checkbox(shopList)', function (obj) {
                        if (obj.checked == true) {
                            if (obj.type == 'one') {
                                shopIds.push(obj.data.ShopID);
                            } else { //全选
                                for (var i = 0; i < table_data.length; i++) {
                                    shopIds.push(table_data[i].ShopID);
                                }
                            }
                        } else {
                            if (obj.type == 'one') {
                                for (var i = 0; i < shopIds.length; i++) {
                                    if (shopIds[i] == obj.data.ShopID) {
                                        // ids.remove(i);用这个方法会报错not a function 
                                        shopIds.pop();   //建议用这个 
                                        shopIds.splice(i, 1);
                                    }
                                }
                            } else { //全选
                                for (var i = 0; i < shopIds.length; i++) {
                                    for (var j = 0; j < table_data.length; j++) {
                                        if (shopIds[i] == table_data[j].ShopID) {
                                            // ids.remove(i); 
                                            shopIds.pop();
                                            shopIds.splice(i, 1);
                                        }
                                    }
                                }
                            }
                        }
                        console.log(shopIds);
                        console.log(table_data);
                    });
                });
    

      

  • 相关阅读:
    LeetCode 动态规划专题
    LeetCode 双指针、滑动窗口、单调队列专题
    LeetCode 单调栈专题
    LeetCode DFS搜索与回溯专题
    LeetCode树专题
    操作系统思维导图| IO管理篇
    2020-为什么换了工作
    深入浅出Spring MVC
    rocketmq初识
    线上故障处理手册
  • 原文地址:https://www.cnblogs.com/ouyangxiaoyao/p/11751918.html
Copyright © 2011-2022 走看看