Layui Table 分页记忆选中

挺好的功能,之前为什么放弃了,哈哈哈!

在最早的版本中,layui 的 table 会记录每页的勾选状态,但很多用户反馈这是 bug,因为当他们获取选中数据时,其它页的勾选数据也包含进来让他们有点莫名。。。迫于无奈,我干脆放弃了这项功能

后来在 Layui 社区中发现有人再次实现,这里备份一下。

  1. <div class="layui-btn-group demoTable">
  2. <button class="layui-btn" data-type="getCheckData">获取选中行数据</button>
  3. <button class="layui-btn" data-type="getCheckLength">获取选中数目</button>
  4. <button class="layui-btn" data-type="isAll">验证是否全选</button>
  5. </div>
  6. <table id="maintb" lay-filter="maintb"></table>
  1. layui.use(['table'], function() {
  2. var table = layui.table,
  3. layer = layui.layer,
  4. $ = layui.$,
  5. form = layui.form;
  6. var mytbl;
  7. //.存储当前页数据集
  8. var pageData = [];
  9. //.存储已选择数据集,用普通变量存储也行
  10. layui.data('checked', null);
  11. //.渲染完成回调
  12. var myDone = function(res) {
  13. //.假设你的表格指定的 id="maintb",找到框架渲染的表格
  14. var tbl = $('#maintb').next('.layui-table-view');
  15. //.记下当前页数据,Ajax 请求的数据集,对应你后端返回的数据字段
  16. pageData = res.data;
  17. var len = pageData.length;
  18. //.遍历当前页数据,对比已选中项中的 id
  19. for (var i = 0; i < len; i++) {
  20. if (layui.data('checked', pageData[i]['id'])) {
  21. //.选中它,目前版本没有任何与数据或表格 id 相关的标识,不太好搞,土办法选择它吧
  22. tbl.find('table>tbody>tr').eq(i).find('td').eq(0).find('input[type=checkbox]').prop('checked', true);
  23. }
  24. }
  25. //.PS:table 中点击选择后会记录到 table.cache,没暴露出来,也不能 mytbl.renderForm('checkbox');
  26. //.暂时只能这样渲染表单
  27. form.render('checkbox');
  28. };
  29. //.渲染表格
  30. mytbl = table.render({
  31. elem: '#maintb',
  32. id: 'maintb',
  33. url: '/f/json/',
  34. where: {},
  35. page: true,
  36. limit: 5,
  37. done: myDone,
  38. cols: [
  39. [
  40. {type: 'checkbox'},
  41. {field:'id', title:'id'},
  42. {field:'time', title: '时间'},
  43. {field:'page', title:'page'}
  44. ]
  45. ]
  46. });
  47. //.监听选择,记录已选择项
  48. table.on('checkbox(maintb)', function(obj) {
  49. //.全选或单选数据集不一样
  50. var data = obj.type == 'one' ? [obj.data] : pageData;
  51. //.遍历数据
  52. $.each(data, function(k, v) {
  53. //.假设你数据中 id 是唯一关键字
  54. if (obj.checked) {
  55. //.增加已选中项
  56. layui.data('checked', {
  57. key: v.id, value: v
  58. });
  59. } else {
  60. //.删除
  61. layui.data('checked', {
  62. key: v.id, remove: true
  63. });
  64. }
  65. });
  66. });
  67. //.官方示例代码
  68. var active = {
  69. getCheckData: function(){ //获取选中数据
  70. //.看看已选中的所有数据
  71. var mySelected = [];
  72. $.each(layui.data('checked'), function(k, v) {
  73. mySelected.push(v);
  74. });
  75. console.log(mySelected);
  76. layer.alert(JSON.stringify(mySelected));
  77. //.看 myDone 的注释得知,下面的方法就不可用了
  78. //var checkStatus = table.checkStatus('maintb')
  79. // ,data = checkStatus.data;
  80. //layer.alert(JSON.stringify(data));
  81. }
  82. ,getCheckLength: function(){ //获取选中数目
  83. layer.msg('选中了:'+ Object.getOwnPropertyNames(layui.data('checked')).length + ' 个');
  84. //var checkStatus = table.checkStatus('maintb')
  85. // ,data = checkStatus.data;
  86. //layer.msg('选中了:'+ data.length + ' 个');
  87. }
  88. ,isAll: function(){ //验证是否全选
  89. layer.msg('是否全选在这里没有意义了');
  90. //var checkStatus = table.checkStatus('maintb');
  91. //layer.msg(checkStatus.isAll ? '全选': '未全选')
  92. }
  93. };
  94. $('.demoTable .layui-btn').on('click', function(){
  95. var type = $(this).data('type');
  96. active[type] ? active[type].call(this) : '';
  97. });
  98. });

参考链接:

http://fly.layui.com/jie/18707/

Layui Table 分页记忆选中的更多相关文章

  1. 项目总结17-使用layui table分页表格

    项目总结17-使用layui table分页表格总结 前言 在项目中,需要用到分页的表格来展示数据,发现layui的分页表格,是一个很好的选择:本文介绍layui table分页表格的前后端简单使用 ...

  2. layui table 分页 序号始终从”1“开始解决方法

    在用Layui table 分页显示数据,用 type:"numbers" 进行显示序号有以下的问题 1.表格自带的分页,page:true 这种分页,在切换页面的时候序号可以正常 ...

  3. layui table 分页 记住之前勾选的数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. layui table分页 page为false时,limit问题

    问题描述:table数据表格page设为false时,limit为默认设置10 解决办法:limit设为 Number.MAX_VALUE 加载全部数据 实例: var table = layui.t ...

  5. Element ui 中使用table组件实现分页记忆选中

    我们再用vue和element-ui,或者其他的表格的时候,可能需要能记忆翻页勾选,那么实现以下几个方法就ok了 示例如下 <el-table :data="tableData&quo ...

  6. layui table 跨页记忆选择

    layui 表格功能目前默认不支持跨页记忆选择 下面来实现layui table跨页记忆选择实现 基于layui版本 1.4.5 表格跨页通用方法 //表格分页复选框 layui.define(['j ...

  7. 关于【vue + element-ui Table的数据多选,多页选择数据回显,分页记录保存选中的数据】的优化

    之前写的[vue + element-ui Table的数据多选,多页选择数据回显,分页记录保存选中的数据]这篇博客.功能虽然实现了相对应的功能.但是用起来很不爽.所以进行了优化. 备注:最近可能没时 ...

  8. layui.table前端+后台处理+分页

    前端 注:监听工具条没有详细写,但路子一样的 @section head{ <script src="~/Content/jquery-easyui-1.5.5.4/jquery.ea ...

  9. 关于在layui中的table checkbox 默认选中设置

    一.layui版本 layui-v2.4.5 二.设置table的checkbox默认选中 总共有两种方法: 方法1:在返回的json中设置LAY_CHECKED为true,页面上的checkbox就 ...

随机推荐

  1. UI自动化测试框架之Selenium关键字驱动

    一.原理及特点 1. 关键字驱动测试是数据驱动测试的一种改进类型 2. 主要关键字包括三类:被操作对象(Item).操作(Operation)和值(value),用面向对象形式可将其表现为Item.O ...

  2. 【运维技术】CentOS7上从零开始安装LAMP安装织梦DedeCMS教程

    前期准备数据 centos7 系统 安装 appache httpd # 更新httpd yum update httpd # 安装httpd yum install -y httpd # 启动服务 ...

  3. Anchor、Dock

    转:http://blog.sina.com.cn/s/blog_7f7cd96601013trt.html 在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大 ...

  4. windows10下如何进行源码编译安装tensorflow

    1.获取python3.5.x https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe 2.安装python3.5.x,默认安装即 ...

  5. linux 查看数据库和表

    mysql -h localhost -u 用戶名 -p密碼                //連接數據庫use desk_show;                                 ...

  6. Codeforces Round #408 (Div. 2) C. Bank Hacking

    http://codeforces.com/contest/796/problem/C Although Inzane successfully found his beloved bone, Zan ...

  7. ng-grid

    请查看官网:http://angular-ui.github.io/ui-grid/ 简单的使用: 总的来说我们 1.需要引入ng-grid-1.3.2.js 2.在html页面需要加入  class ...

  8. HTML5里的placeholder属性

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. rabbitmq 对多服务器p2p模式配置的一个测试

    一直对rabbitmq p2p 模式的多服务器下做相同配置的 各个服务器数据接受情况比较好奇 今天有空测试了下 xml 文件 <?xml version="1.0" enco ...

  10. bzoj1367

    题解: 左偏树模板题 维护n/2的好多课左偏树 每一次加进来一个点的时候,只有一个点 然后每次中位数比前面小的时候,那么和前面合并 代码: #include<bits/stdc++.h> ...