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>
本文转自:https://www.cnblogs.com/wangxiayun/p/9145638.html
Atas ialah kandungan terperinci layui实现数据表格及分页的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Langkah penetapan lompat halaman log masuk Layui: Tambah kod lompat: Tambah pertimbangan dalam borang log masuk serah acara klik butang, dan lompat ke halaman yang ditentukan melalui window.location.href selepas berjaya log masuk. Ubah suai konfigurasi borang: tambah medan input tersembunyi pada elemen borang lay-filter="login", dengan nama "redirect" dan nilainya ialah alamat halaman sasaran.

layui menyediakan pelbagai kaedah untuk mendapatkan data borang, termasuk mendapatkan terus semua data medan borang, mendapatkan nilai elemen bentuk tunggal, menggunakan kaedah formAPI.getVal() untuk mendapatkan nilai medan yang ditentukan, menyerikan data borang dan menggunakannya sebagai parameter permintaan AJAX, dan mendengar acara penyerahan Borang mendapat data.

Susun atur suai boleh dicapai dengan menggunakan fungsi susun atur responsif rangka kerja layui. Langkah-langkahnya termasuk: merujuk rangka kerja layui. Tentukan bekas susun atur penyesuaian dan tetapkan kelas bekas layui. Gunakan titik putus responsif (xs/sm/md/lg) untuk menyembunyikan elemen di bawah titik putus tertentu. Tentukan lebar elemen menggunakan sistem grid (layui-col-). Cipta jarak melalui offset (layui-offset-). Gunakan utiliti responsif (layui-invisible/show/block/inline) untuk mengawal keterlihatan elemen dan cara ia muncul.

Kaedah menggunakan layui untuk menghantar data adalah seperti berikut: Gunakan Ajax: Cipta objek permintaan, tetapkan parameter permintaan (URL, kaedah, data), dan proses respons. Gunakan kaedah terbina dalam: Permudahkan pemindahan data menggunakan kaedah terbina dalam seperti $.post, $.get, $.postJSON atau $.getJSON.

Perbezaan antara layui dan Vue terutamanya ditunjukkan dalam fungsi dan kebimbangan. Layui memfokuskan pada pembangunan pesat elemen UI dan menyediakan komponen pasang siap untuk memudahkan pembinaan halaman manakala Vue ialah rangka kerja tindanan penuh yang memfokuskan pada pengikatan data, pembangunan komponen dan pengurusan keadaan, dan lebih sesuai untuk membina aplikasi yang kompleks. Layui mudah dipelajari dan sesuai untuk membina halaman dengan cepat; Vue mempunyai keluk pembelajaran yang curam tetapi membantu membina aplikasi berskala dan mudah diselenggara. Bergantung pada keperluan projek dan tahap kemahiran pembangun, rangka kerja yang sesuai boleh dipilih.

layui ialah rangka kerja UI bahagian hadapan yang menyediakan pelbagai komponen, alatan dan fungsi UI untuk membantu pembangun membina aplikasi web moden, responsif dan interaktif dengan cepat penyesuaian. Ia digunakan secara meluas dalam pembangunan pelbagai aplikasi web, termasuk sistem pengurusan, platform e-dagang, sistem pengurusan kandungan, rangkaian sosial dan aplikasi mudah alih.

layui dan vue ialah rangka kerja bahagian hadapan adalah perpustakaan ringan yang menyediakan komponen dan alatan UI ialah rangka kerja komprehensif yang menyediakan komponen UI, pengurusan keadaan, pengikatan data, penghalaan dan fungsi lain. layui adalah berdasarkan seni bina modular, dan vue adalah berdasarkan seni bina komponen. layui mempunyai ekosistem yang lebih kecil, vue mempunyai ekosistem yang besar dan aktif. Keluk pembelajaran layui adalah rendah, dan keluk pembelajaran vue adalah curam. layui sesuai untuk projek kecil dan pembangunan pesat komponen UI, manakala vue sesuai untuk projek besar dan senario yang memerlukan fungsi yang kaya.

Rangka kerja layui ialah rangka kerja bahagian hadapan berasaskan JavaScript yang menyediakan satu set komponen dan alatan UI yang mudah digunakan untuk membantu pembangun membina aplikasi web responsif dengan cepat. Ciri-cirinya termasuk: modular, ringan, responsif dan mempunyai dokumentasi lengkap dan sokongan komuniti. layui digunakan secara meluas dalam pembangunan sistem backend pengurusan, laman web e-dagang, dan aplikasi mudah alih. Kelebihannya ialah permulaan yang cepat, kecekapan yang dipertingkatkan, dan penyelenggaraan yang mudah Kelemahannya ialah penyesuaian yang lemah dan kemas kini teknologi yang perlahan.
