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. 深入理解jvm--Java中init和clinit区别完全解析(转)

    转自:http://blog.csdn.net/u013309870/article/details/72975536 init和clinit区别 ①init和clinit方法执行时机不同 init是 ...

  2. P1757 通天之分组背包 / hdu1712 ACboy needs your help (分组背包入门)

    P1757 通天之分组背包 hdu1712 ACboy needs your help hdu1712题意:A[i][j]表示用j天学习第i个课程能够得到A[i][j]的收益,求m天内获得的收益最大值 ...

  3. HDU1510 White rectangles( 乱搞 O(n^3) )题解

    思路: 友谊赛的时候一直想到了,但是没想出来怎么遍历才能找到所有矩阵,卡住了. 这里讲一下完整思路:我们用一个num[i][j]表示第i行第j列每一列连续的白色格子数量,然后我们定义一个MIN,并且每 ...

  4. 实时刷新winform中的某一个控件上的文字

    需要注意的是,必须从UI线程,另外启动一个线程才可以. 在新线程调用异步刷新就OK了 Thread thread; private void button1_Click(object sender, ...

  5. Redis之持久化

    Redis 持久化 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的所有数据进 ...

  6. JAVA_返回一个数值的相反数的几种方式.

    一个方法接收一个int类型值,需要返回它的相反数. 如传入1,返回-1 传入-22,返回22 最简单的方式是return 0-number; 还有其他方式: public class Kata { p ...

  7. python应用-matplotlib绘图

    详细内容参看:官网 测试数据: # 传入的参数 x=[1,2,3,4,5] squares=[1,4,9,16,25] 简单的绘图 import matplotlib.pyplot as plt de ...

  8. Spring思维导图,让spring不再难懂(一)

    写在前面 很多人在微信公众号中给我留言说想看spring的思维导图,正好也打算写.与其他框架相比,spring项目拥有更多的模块,我们常用的ioc,mvc,aop等,这些是spring的主要板块.一篇 ...

  9. Python XML解析和处理

    movies.xml <collection shelf = "New Arrivals"> <movie title = "Enemy Behind& ...

  10. PHP获得真实客户端的真实时用到的IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR

    REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP.如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP. HTTP_CLIENT_IP 是代理服务器发送的HTTP头. ...