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数据表格模块,实现遍历操作的,不过数据量大的话还是需要搜索功能的.这是我参考网上大佬代码写出的搜索功能. 实现原理 要实现搜索功能,肯定需要链接 ...
随机推荐
- 0006 列表(ul、ol、dl)
1. 列表标签(重点) 学习目标 理解 无序列表的应用场景 自定义列表的应用场景 应用 无序列表语法 自定义列表语法 问? 前面我们知道表格一般用于数据展示的,但是网页中还是有很多跟表格类似的布局,如 ...
- DEVOPS技术实践_11:Jenkins集成Sonar
前言 前面已经有介绍sonar的安装,简单应用,下面在简答的研究一下sonar和jenkins集成的简单使用,对于sonar的安装不做介绍 一 sonar的简单介绍 持续检查避免了低质量的代码,比如S ...
- 小白进阶之路-python基本运算符
1.算数运算符(+.-.*./.%.**(幂 二次方.三次方).//(地板除,返回商的整数部分) 2.比较运算符(==.!=.<>(不等于).>.<.>=.<=) ...
- 【题解】P5589 小猪佩奇玩游戏(期望)
[题解]P5589 小猪佩奇玩游戏(期望) 假设一个点有\(x\)个点(包括自己)可以到达他,他就对答案有\(1/x\)的贡献.这是因为这个点必须被删掉而通过删掉这个点本身删掉这个点的概率是\(1/x ...
- $CF908D\ New\ Year\ and\ Arbitrary\ Arrangement$ 期望$dp$
正解:期望$dp$ 解题报告: 传送门$QwQ$ 阿关于题目里那个形如$ab$的子序列我说下,,,我我我之前$get$了好久$QAQ$.这里子序列的个数的定义是这样儿的,举个$eg$,$aabb$,就 ...
- 洛谷$P$2235 $Kathy$函数 $[HNOI2002]$ 数位$dp$
正解:数位$dp$ 解题报告: 传送门$qwq$ $HNOI$的题从02年就这么神了嘛$QAQ$,,, 嗷对了这题如果看出了一个结论就是个数位$dp$板子,,,?但是结论很神我$jio$得挺难看出来的 ...
- 洛谷$P4316$ 绿豆蛙的归宿 期望
正解:期望 解题报告: 传送门! 看懂题目还是挺水的$(bushi$ 三个方法,但因为题目太水了懒得一一介绍了,,,反正都是期望,,,$so$随便港个最简单的趴$QwQ$ 直接考虑每条边的贡献,就会是 ...
- 力扣142——环形链表 II
原题 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos ...
- (openssh、telnet、vsftpd、nfs、rsync、inotify、samba)
(openssh.telnet.vsftpd.nfs.rsync.inotify.samba) 一:OpenSSH服务与Telnet服务(必须掌握) 前言:OpenSSH是加密传输,Telnet是明文 ...
- [开源] SEPP——研发协作一站式管理平台
演示地址 http://www.seqcer.com/ 仅对chrome浏览器做了完全适配,其他chromium核心浏览器或者firefox.safari也能使用,但是不推荐 仓库地址: 前端:htt ...