Layui Table 分页记忆选中
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 分页记忆选中的更多相关文章
- 项目总结17-使用layui table分页表格
项目总结17-使用layui table分页表格总结 前言 在项目中,需要用到分页的表格来展示数据,发现layui的分页表格,是一个很好的选择:本文介绍layui table分页表格的前后端简单使用 ...
- layui table 分页 序号始终从”1“开始解决方法
在用Layui table 分页显示数据,用 type:"numbers" 进行显示序号有以下的问题 1.表格自带的分页,page:true 这种分页,在切换页面的时候序号可以正常 ...
- layui table 分页 记住之前勾选的数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- layui table分页 page为false时,limit问题
问题描述:table数据表格page设为false时,limit为默认设置10 解决办法:limit设为 Number.MAX_VALUE 加载全部数据 实例: var table = layui.t ...
- Element ui 中使用table组件实现分页记忆选中
我们再用vue和element-ui,或者其他的表格的时候,可能需要能记忆翻页勾选,那么实现以下几个方法就ok了 示例如下 <el-table :data="tableData&quo ...
- layui table 跨页记忆选择
layui 表格功能目前默认不支持跨页记忆选择 下面来实现layui table跨页记忆选择实现 基于layui版本 1.4.5 表格跨页通用方法 //表格分页复选框 layui.define(['j ...
- 关于【vue + element-ui Table的数据多选,多页选择数据回显,分页记录保存选中的数据】的优化
之前写的[vue + element-ui Table的数据多选,多页选择数据回显,分页记录保存选中的数据]这篇博客.功能虽然实现了相对应的功能.但是用起来很不爽.所以进行了优化. 备注:最近可能没时 ...
- layui.table前端+后台处理+分页
前端 注:监听工具条没有详细写,但路子一样的 @section head{ <script src="~/Content/jquery-easyui-1.5.5.4/jquery.ea ...
- 关于在layui中的table checkbox 默认选中设置
一.layui版本 layui-v2.4.5 二.设置table的checkbox默认选中 总共有两种方法: 方法1:在返回的json中设置LAY_CHECKED为true,页面上的checkbox就 ...
随机推荐
- InstallShieldpro2015 使用教程
1.下载地址:http://pan.baidu.com/s/1pLDCh3H ,如果网盘链接失效,请联系我. 2.解压后双击 3.安装完毕后,运行InstallShieldpro2015,会出现如下提 ...
- UVA 257 Palinwords(hash)题解
思路:给你字符串,如果他包含至少两个长度大于等于3的回文,并且这些回文不能嵌套(例如aaa嵌套在aaaa,waw嵌套在awawa),如果这个字符串这么牛逼的话,就输出他. 思路:拿到字符串先正序has ...
- 学习mybatis-3 step by step 篇一
一.搭建简单mybatis-3环境(详细的中文文档) 集成开发环境:IDEA 项目:maven + mybatis-3 1.创建maven结构项目 含简单,如下图: 下一步后,填写groupid和ar ...
- Android -- service 利用广播调用服务的方法
1. 实现原理,在Service里面注册一个广播接收者, 想要调用的时候app发送出广播, 后台的service里面的广播接收者接收到广播,并调用service里面的方法. 2. 示例代码 MainA ...
- 五句话搞定JavaScript作用域【转】
JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走遍天下都不怕... 一.“JavaScript中无块级作用域” 在Java或C# ...
- ng-grid
请查看官网:http://angular-ui.github.io/ui-grid/ 简单的使用: 总的来说我们 1.需要引入ng-grid-1.3.2.js 2.在html页面需要加入 class ...
- 辗转相除法 & 裴蜀定理
2018-03-11 17:39:22 一.辗转相除法 在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法.辗转相除法首次出现于欧几里得的&l ...
- C#使用(NamedPipe)命名管道通信的例子
https://blog.csdn.net/yl2isoft/article/details/20228279
- codefroce385E矩阵快速幂
状态变化 (x,y,dx,dy,i) 表示i时刻熊站在(x,y)处速度向量(dx,dy)下一个状态是 ( 2x+y+dx+i , x+2y+dy+i , x+y+dx , x+y+dy , i+1 ...
- VGG16提取图像特征 (torch7)
VGG16提取图像特征 (torch7) VGG16 loadcaffe torch7 下载pretrained model,保存到当前目录下 th> caffemodel_url = 'htt ...