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就 ...
随机推荐
- UI自动化测试框架之Selenium关键字驱动
一.原理及特点 1. 关键字驱动测试是数据驱动测试的一种改进类型 2. 主要关键字包括三类:被操作对象(Item).操作(Operation)和值(value),用面向对象形式可将其表现为Item.O ...
- 【运维技术】CentOS7上从零开始安装LAMP安装织梦DedeCMS教程
前期准备数据 centos7 系统 安装 appache httpd # 更新httpd yum update httpd # 安装httpd yum install -y httpd # 启动服务 ...
- Anchor、Dock
转:http://blog.sina.com.cn/s/blog_7f7cd96601013trt.html 在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大 ...
- 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,默认安装即 ...
- linux 查看数据库和表
mysql -h localhost -u 用戶名 -p密碼 //連接數據庫use desk_show; ...
- Codeforces Round #408 (Div. 2) C. Bank Hacking
http://codeforces.com/contest/796/problem/C Although Inzane successfully found his beloved bone, Zan ...
- ng-grid
请查看官网:http://angular-ui.github.io/ui-grid/ 简单的使用: 总的来说我们 1.需要引入ng-grid-1.3.2.js 2.在html页面需要加入 class ...
- HTML5里的placeholder属性
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- rabbitmq 对多服务器p2p模式配置的一个测试
一直对rabbitmq p2p 模式的多服务器下做相同配置的 各个服务器数据接受情况比较好奇 今天有空测试了下 xml 文件 <?xml version="1.0" enco ...
- bzoj1367
题解: 左偏树模板题 维护n/2的好多课左偏树 每一次加进来一个点的时候,只有一个点 然后每次中位数比前面小的时候,那么和前面合并 代码: #include<bits/stdc++.h> ...