layui数据表格及分页
一.前端部分
html只需要放一个有id的div就行了,方便js获取渲染区域
<div id="data_grid" lay-filter="demo" ></div>
js部分需要注意url为异步数据接口,done是渲染完表格之后的回调函数
table.render({
elem: '#data_grid'
//,width: 900
//,height: 274
,cols: [[ //标题栏
{field: 'id', title: 'ID', width: 80, sort: true}
,{field: 'username', title:'用户名',width: 100} //空列
,{field: 'password', title: '密码', width: 120}
,{field: 'gender', title: '性别', width: 150}
,{field: 'nichen', title: '昵称', width: 150}
,{field: 'birthday', title: '出生年月', width: 120}
,{fixed: 'right', width: 215,align:'center', toolbar: '#barDemo'}
]]
,url:url
,skin: 'row' //表格风格
,even: true
,page: true //是否显示分页
,limits: [3,5,10]
,limit: 5 //每页默认显示的数量
,done:function(res){
userPage.data = res.data;
}
//,loading: false //请求数据时,是否显示loading
});
根据条件查询,表格异步刷新,where为附带参数
$('#sub_query_form').on('click',function () {
var queryPo = page.formToJson($('#query_form').serialize());
var table = layui.table;
table.reload('data_grid', {
url: '/getUserList.action',
page:{
curr:1 //从第一页开始
},
method:'post',
where:{
queryStr:queryPo
},
done:function (res) {
userPage.data = res.data;
}
});
});
将x-www-form-urlencoded转化为json字符串
formToJson:function (data) {
data=data.replace(/&/g,"\",\"");
data=data.replace(/=/g,"\":\"");
data="{\""+data+"\"}";
return data;
}
表格工具栏使用
1.首先在html里定义好按钮
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="add">增加</a>
<a class="layui-btn layui-btn-xs" lay-event="detail">查看</a>
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> <!-- 这里同样支持 laytpl 语法,如: -->
{{# if(d.auth > 2){ }}
<a class="layui-btn layui-btn-xs" lay-event="check">审核</a>
{{# } }}
</script>
2.js内引用
layui.use('table', function(){
var table = layui.table;
userPage.tab('/getUserList.action');
//监听工具条
table.on('tool(demo)', function(obj){
var data = obj.data;
userPage.data = obj.data;
if(obj.event === 'detail'){
layer.msg('ID:'+ data.id + ' 的查看操作');
}
else if(obj.event === 'del'){
layer.confirm('真的要删除这条记录么',{icon: 3, title:'确定删除'}, function(index){
obj.del();
$.post('/doDelete.action?id='+data.id,function (res) {
userPage.reload(res);
});
layer.close(index);
});
}
else if(obj.event === 'add'){
layer.open({
title:'增加窗口',
content:userPage.template,
yes:function () {
var user = page.formToJson($('#layer_form').serialize());
var data = 'user='+user;
$.post('/doAdd.action',data,function (res) {
userPage.reload(res);
});
layer.closeAll();
}
})
}
else if(obj.event === 'edit'){
layer.open({
title:'编辑窗口',
content:userPage.template,
success:function () {
$('input[name="id"]').val(userPage.data.id);
$('input[name="username"]').val(userPage.data.username);
$('input[name="password"]').val(userPage.data.password);
$('input[name="gender"]').val(userPage.data.gender);
$('input[name="nichen"]').val(userPage.data.nichen);
$('input[name="birthday"]').val(userPage.data.birthday);
},
yes: function(){
var mgUser = page.formToJson($('#layer_form').serialize());
var data = 'user='+mgUser;
$.post('/doEdit.action',data,function (res) {
userPage.reload(res);
});
layer.closeAll();
}
})
}
});
});
二.服务端部分
Controller层需要接收以下参数,page,limit,要查询的条件,返回值根据layui文档给出的默认返回值
@RequestMapping("/getUserList")
@ResponseBody
public PageList<MgUser> getUserList(@RequestParam(required = false,defaultValue = "1") int page,@RequestParam(required = false,defaultValue = "5") int limit,@RequestParam(required = false) String queryStr){
QueryPo queryPo = null;
if (!StringUtils.isEmpty(queryStr)){ //性别类型转换
queryPo = JSONObject.parseObject(queryStr,QueryPo.class);
if ("1".equals(queryPo.getGender())){
queryPo.setGender("男");
}
if ("2".equals(queryPo.getGender())){
queryPo.setGender("女");
}
}
PageList pageList = new PageList();
try {
if (!StringUtils.isEmpty(queryPo)){ //中文字转码
if(!StringUtils.isEmpty(queryPo.getKeywords())){
queryPo.setKeywords(URLDecoder.decode(queryPo.getKeywords(),"utf-8"));
}
}
List<MgUser> userList = userService.getUserList(page,limit,queryPo); //根据条件查询分页数据
pageList.setCode("0");
pageList.setMsg("ok");
pageList.setData(userList);
int count = userService.countUserByExample(queryPo);
pageList.setCount(count);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
pageList.setCode("-1");
pageList.setMsg("数据获取异常");
return pageList;
}
return pageList;
}
Service层根据条件查询并分页
public List<MgUser> getUserList(int page , int limit, QueryPo queryPo) {
MgUserExample userExample = new MgUserExample();
MgUserExample.Criteria criteria = userExample.createCriteria();
if(!StringUtils.isEmpty(queryPo)){
if (!StringUtils.isEmpty(queryPo.getGender())){
criteria.andGenderEqualTo(queryPo.getGender());
}
if (!StringUtils.isEmpty(queryPo.getKeywords())){
criteria.andUsernameLike("%"+queryPo.getKeywords()+"%");
}
}
userExample.setStart((page-1)*limit);
userExample.setLimit(limit);
List<MgUser> mgUsers = userMapper.selectByExample(userExample);
return mgUsers;
}
注意由于mybatis逆向工程生成的Example没有limit和page,所以需要自己加上
private int start;
private int limit; public int getStart() {
return start;
} public void setStart(int start) {
this.start = start;
} public int getLimit() {
return limit;
} public void setLimit(int limit) {
this.limit = limit;
}
接着修改Mybatis的mapper.xml,需要加上分页条件
<select id="selectByExample" resultMap="BaseResultMap" parameterType="com.wang.entity.MgUserExample" >
select
<if test="distinct" >
distinct
</if>
<include refid="Base_Column_List" />
from mg_user <if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null" >
order by ${orderByClause}
</if>
<if test="start !=0 or limit!=0">
limit #{start},#{limit}
</if>
</select>
layui数据表格及分页的更多相关文章
- layui 数据表格+分页+搜索+checkbox+缓存选中项数据
在做数据表格的时候遇到了很多坑, 今天整理一下方便以后使用. 主要功能是使用数据表格, 做分页,做搜索, 还有checkbox, 支持全选. 当选中一些数据的时候, 数据切换页面数据在切换回来后, ...
- LayUI——数据表格使用
Layui数据表格的实际项目使用 Layui的数据表格可谓是在后台管理的页面中经常用到的工具了 最近做项目就用到了,项目的要求是用数据表格显示出后台文章的列表并且每一行的文章都有对应的修改删除操作按钮 ...
- 使用webapi绑定layui数据表格完整增删查改记录
因为每次给layui数据表格绑定数据或者类似操作的时候 总要重新做一遍 而且忘记很多东西 所以干脆写博客把相关东西记录下来 便于查阅和修正 以下是一个完整的数据表格i项目的增删改查案例 先来看后台 ...
- 【Layui】当Layui数据表格和Layui下拉框组合时发生的问题
关于Layui数据表格用下拉框显示问题 如图所示 可以看见当点击下拉框时下拉选项被下拉框覆盖 此时你需要在数据表格渲染完成时的回调内添加如下代码即可 $(".sel_scrq"). ...
- Layui数据表格模型
视图模型 package com.meiyou.model; import org.springframework.context.annotation.Bean; import java.io.Se ...
- Layui数据表格的接口数据请求方式为Get
Layui数据表格的接口数据请求方式为Get
- layui 数据表格自带的导出Excel,身份证等E+/000问题解决
layui数据表格的工具栏自带导出Excel 会将身份证等 长整数的 自动变成E+并且 后面有000.从而导致数据不能完整导出. 解决方案: 1.先下载Excel的插件包.将压缩包内的两个js放到 l ...
- 解决:layUI数据表格+简单查询
解决:layUI数据表格+简单查询 最近在用layui写项目,在做到用户查询时,发现在layui框架里只有数据表格,不能增加查询.于是自己摸索了一下,写个笔记记录一下. 我想要的效果: 1.定义查询栏 ...
- layui数据表格搜索
简单介绍 我是通过Servlet传递json给layui数据表格模块,实现遍历操作的,不过数据量大的话还是需要搜索功能的.这是我参考网上大佬代码写出的搜索功能. 实现原理 要实现搜索功能,肯定需要链接 ...
随机推荐
- 怎么安装GUI
python安装easygui的过程中,下载的是0.97.安装的时候提示setuptools模块不存在.然后又去安装setuptools等等, 真麻烦.也没有成功.后来又下载了0.96的.才成功.下面 ...
- 记录nfs的防火墙以及权限问题
在前面的一篇文章(https://www.cnblogs.com/zyxnhr/p/10660431.html)中,已经介绍了nfs的安装挂载使用,但是存在两个问题 一. 防火墙 在nfs和nfs的守 ...
- 【一起学源码-微服务】Nexflix Eureka 源码十一:EurekaServer自我保护机制竟然有这么多Bug?
前言 前情回顾 上一讲主要讲了服务下线,已经注册中心自动感知宕机的服务. 其实上一讲已经包含了很多EurekaServer自我保护的代码,其中还发现了1.7.x(1.9.x)包含的一些bug,但这些问 ...
- Java 迭代器须知 | “for each”与迭代器的关系
Iterator接口包含4个方法: 通过反复调用next方法就可以逐个访问集合中的每个元素.需要注意,如果到达了集合的末尾,再次调用next方法将会抛出一个NoSuchElementException ...
- A记录都不懂,怎么做开发Leader?
开发 Leader 和一线开发的区别在于:普通一线开发很多时候都只接触业务编码,不需要关注除开发之外的其他事情.但是作为一个开发 Leader,不仅仅需要懂开发层面的东西,还需要懂得运维层面的东西. ...
- 洛谷P1220 关路灯 题解 区间DP
题目链接:https://www.luogu.com.cn/problem/P1220 本题涉及算法:区间DP. 我们一开始要做一些初始化操作,令: \(p[i]\) 表示第i个路灯的位置: \(w[ ...
- 「CodeForces 476A」Dreamoon and Stairs
Dreamoon and Stairs 题意翻译 题面 DM小朋友想要上一个有 \(n\) 级台阶的楼梯.他每一步可以上 \(1\) 或 \(2\) 级台阶.假设他走上这个台阶一共用了 \(x\) 步 ...
- (httpd、php)
(一)http协议介绍 http: 超文本传输协议,http协议是应用层协议,实现http协议的软件都监听的TCP的80端口之上.http协议也是一种文本协议,是基于TCP协议实现 http协议有几个 ...
- 删除资源管理器中,设备和驱动器与左侧边栏中存在的WPS网盘等图标
存在的问题:资源管理器中,设备和驱动器与左侧边栏中存在的百度网盘和WPS网盘等图标,看着比较碍眼,所以想设置为不显示,可是软件本身不提供右键不显示或删除的功能 解决方案: 删除设备和驱动器中不想要的图 ...
- java序列化(二)
上一篇我们简单的了解了java的序列化方法.可以想一下,如果有两个类,如果父类实现了序列化,子类没有实现序列化,子类在进行对象序列化读写时,父类和子类均被实现序列化.如果其中父类没有实现序列化,子类实 ...