Layui Table 分页记忆选中

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

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

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

    <div class="layui-btn-group demoTable">
<button class="layui-btn" data-type="getCheckData">获取选中行数据</button>
<button class="layui-btn" data-type="getCheckLength">获取选中数目</button>
<button class="layui-btn" data-type="isAll">验证是否全选</button>
</div>
<table id="maintb" lay-filter="maintb"></table>
 layui.use(['table'], function() {
var table = layui.table,
layer = layui.layer,
$ = layui.$,
form = layui.form;
var mytbl;
//.存储当前页数据集
var pageData = [];
//.存储已选择数据集,用普通变量存储也行
layui.data('checked', null); //.渲染完成回调
var myDone = function(res) {
//.假设你的表格指定的 id="maintb",找到框架渲染的表格
var tbl = $('#maintb').next('.layui-table-view'); //.记下当前页数据,Ajax 请求的数据集,对应你后端返回的数据字段
pageData = res.data;
var len = pageData.length; //.遍历当前页数据,对比已选中项中的 id
for (var i = 0; i < len; i++) {
if (layui.data('checked', pageData[i]['id'])) {
//.选中它,目前版本没有任何与数据或表格 id 相关的标识,不太好搞,土办法选择它吧
tbl.find('table>tbody>tr').eq(i).find('td').eq(0).find('input[type=checkbox]').prop('checked', true);
}
} //.PS:table 中点击选择后会记录到 table.cache,没暴露出来,也不能 mytbl.renderForm('checkbox');
//.暂时只能这样渲染表单
form.render('checkbox');
}; //.渲染表格
mytbl = table.render({
elem: '#maintb',
id: 'maintb',
url: '/f/json/',
where: {},
page: true,
limit: 5,
done: myDone,
cols: [
[
{type: 'checkbox'},
{field:'id', title:'id'},
{field:'time', title: '时间'},
{field:'page', title:'page'}
]
]
}); //.监听选择,记录已选择项
table.on('checkbox(maintb)', function(obj) {
//.全选或单选数据集不一样
var data = obj.type == 'one' ? [obj.data] : pageData; //.遍历数据
$.each(data, function(k, v) {
//.假设你数据中 id 是唯一关键字
if (obj.checked) {
//.增加已选中项
layui.data('checked', {
key: v.id, value: v
});
} else {
//.删除
layui.data('checked', {
key: v.id, remove: true
});
}
});
}); //.官方示例代码
var active = {
getCheckData: function(){ //获取选中数据
//.看看已选中的所有数据
var mySelected = [];
$.each(layui.data('checked'), function(k, v) {
mySelected.push(v);
});
console.log(mySelected);
layer.alert(JSON.stringify(mySelected)); //.看 myDone 的注释得知,下面的方法就不可用了
//var checkStatus = table.checkStatus('maintb')
// ,data = checkStatus.data;
//layer.alert(JSON.stringify(data));
}
,getCheckLength: function(){ //获取选中数目
layer.msg('选中了:'+ Object.getOwnPropertyNames(layui.data('checked')).length + ' 个'); //var checkStatus = table.checkStatus('maintb')
// ,data = checkStatus.data;
//layer.msg('选中了:'+ data.length + ' 个');
}
,isAll: function(){ //验证是否全选
layer.msg('是否全选在这里没有意义了'); //var checkStatus = table.checkStatus('maintb');
//layer.msg(checkStatus.isAll ? '全选': '未全选')
}
}; $('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});

参考链接:

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. mailx配置安装

    mailxwget http://ftp.debian.org/debian/pool/main/h/heirloom-mailx/heirloom-mailx_12.5.orig.tar.gztar ...

  2. crontab 定时执行脚本出错,但手动执行脚本正常

    原因: crontab 没有去读环境变量,需要再脚本中手动引入环境变量,可以用source 也可以用export 写死环境变量. 为了定时监控Linux系统CPU.内存.负载的使用情况,写了个Shel ...

  3. [bug report] 当springboot报错 找不到类 javax.xml.bind.JAXBException

    <!--以下四个依赖均是javax.xml.bind.JAXBException的依赖 在java6/7/8默认支持,java9不再支持--> <dependency> < ...

  4. 代理模式:利用JDK原生动态实现AOP

    代理模式:利用JDK原生动态实现AOP http://www.cnblogs.com/qiuyong/p/6412870.html 1.概述 含义:控制对对象的访问. 作用:详细控制某个(某类)某对象 ...

  5. php 格式化时间

    <?php echo date("Y/m/d") . "<br>"; echo date("Y.m.d") . " ...

  6. lnmp升级php

    引言 服务器用的是lnmp一键安装包,但是php版本是5.5.项目用的是TP5.1需要php5.6的环境. 好慌! 进行升级操作 进入lnmp安装环境 ./upgrade.sh php 然后输入php ...

  7. Linux 常用环境搭建

    已有环境 python 2.6.6 jdk 1.7 —tomcat— —jenkins— —jq— —Python 2.7— —pip— —PIL— —Android SDK— —yum or apt ...

  8. 获取文本中所有的<img>标签的位置,获取所有img标签的src

    public static int[] GetImagePos(string str) { str = str.Replace("$", " "); str = ...

  9. 数论练习(6)——hdu A/B(逆元gcd)

    A/B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  10. IOS-高仿bilibili项目

    高仿bilibili项目成长之路 (logo) 高仿bilibili项目 Github链接:(https://github.com/MichaelHuyp/Bilibili_Wuxianda) 目前完 ...