Layui Table 分页时记住选中状态
Js脚本

define(["jquery", "layui"], function ($, layui) { var table = layui.table; //记录选中表格记录编号 var checkedMultiList = []; var tableCheckBoxMultiColumnUtil = { /*初始化分页设置*/ init: function (settings) { var param = { //表格id gridId: '', //表格lay-filter值 filterId: '', //表格主键字段名 fieldName: '' }; $.extend(param, settings); //设置当前保存数据参数 if (checkedMultiList[param.gridId] == null) { checkedMultiList[param.gridId] = []; } //监听选中行 table.on('checkbox(' + param.filterId + ')', function (obj) { var type = obj.type; var checked = obj.checked; //当前选中数据 var checkRowData = []; //当前取消选中的数据 var cacelCheckedRowData = []; //选中 if (checked) { checkRowData = table.checkStatus(param.gridId).data; } //取消选中 else { if (type == 'all') { //当前页数据 var currentPageData = table.cache[param.gridId]; //debugger; cacelCheckedRowData = currentPageData; } else { cacelCheckedRowData.push(obj.data); } } //清除数据 $.each(cacelCheckedRowData, function (index, item) { var itemValue = item[param.fieldName]; checkedMultiList[param.gridId] = checkedMultiList[param.gridId].filter(function (fItem, fIndex) { return fItem[param.fieldName] != itemValue; }) }); //添加选中数据 $.each(checkRowData, function (index, item) { //debugger; var itemValue = item[param.fieldName]; var objFilter = checkedMultiList[param.gridId].filter(function (fItem, fIndex) { return fItem[param.fieldName] == itemValue; }); if (objFilter == null || objFilter.length == 0) { var rowObj = item; checkedMultiList[param.gridId].push(rowObj); } }); }); }, //设置页面默认选中(在表格加载完成之后调用) checkedDefault: function (settings) { var param = { //表格id gridId: '', //表格主键字段名 fieldName: '' }; $.extend(param, settings); //当前页数据 var currentPageData = table.cache[param.gridId]; if (checkedMultiList[param.gridId] != null && checkedMultiList[param.gridId].length > 0) { $.each(currentPageData, function (index, item) { var itemValue = item[param.fieldName]; var objFilter = checkedMultiList[param.gridId].filter(function (filterItem, filterIndex) { return filterItem[param.fieldName] == itemValue; }); if (objFilter != null && objFilter.length > 0) { //设置选中状态 item.LAY_CHECKED = true; var rowIndex = item['LAY_TABLE_INDEX']; updateRowCheckStatus(param.gridId, 'tr[data-index=' + rowIndex + '] input[type="checkbox"]'); } }); } //判断当前页是否全选 var currentPageCheckedAll = table.checkStatus(param.gridId).isAll; if (currentPageCheckedAll) { updateRowCheckStatus(param.gridId, 'thead tr input[type="checkbox"]'); } }, //获取当前获取的所有集合值 getValue: function (settings) { var param = { //表格id gridId: '' }; $.extend(param, settings); return checkedMultiList[param.gridId]; }, //设置选中的id(一般在编辑时候调用初始化选中值) setIds: function (settings) { var param = { gridId: '', //数据集合 ids: [] }; $.extend(param, settings); checkedMultiList[param.gridId] = []; $.each(param.ids, function (index, item) { checkedMultiList[param.gridId].push(parseInt(item)); }); } }; function updateRowCheckStatus(gridId, ele) { var layTableView = $('.layui-table-view'); //一个页面多个表格,这里防止更新表格错误 $.each(layTableView, function (index, item) { if ($(item).attr('lay-id') == gridId) { $(item).find(ele).prop('checked', true); $(item).find(ele).next().addClass('layui-form-checked'); } }); } return tableCheckBoxMultiColumnUtil; });
Js调用

(function () { require(["jquery", "layui", "savecheckstatus"], function ($, layui, SaveCheckStatus) { //车辆结果表格 var layuiTable; $(function () { //1.初始化分页设置 SaveCheckStatus.init({ gridId: 'i_Layer_SearchResult_Table', filterId: 'i_Layer_SearchResult_Table_Filter', fieldName: 'id' }); loadSearchCarTable(); btnEvent(); }); function loadSearchCarTable() { //加载搜索车辆结果表格 layuiTable = layui.table.render({ elem: '#i_Layer_SearchResult_Table', id: "i_Layer_SearchResult_Table", url: URL.paginationTable, //数据接口 method: "post", page: true, //开启分页 limit: 10, limits: [5, 10, 20], cols: [] done: function () { //2.初始化表格行选中状态 SaveCheckStatus.checkedDefault({ gridId: 'i_Layer_SearchResult_Table', fieldName: 'id' }); } }); } //按钮事件 function btnEvent() { //获取选择结果按钮 $("#btn").on("click", function () { //3.获取选中编号 var tableData = SaveCheckStatus.getValue({ gridId: 'i_Layer_SearchResult_Table' }); console.log(tableData); }); } }); })();
转载自:https://blog.csdn.net/feter1992/article/details/85226329
分类:
前端 / Layui
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器