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
以上是layui實作資料表格及分頁的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

layui 登入頁面跳轉設定步驟:新增跳轉代碼:在登入表單提交按鈕點選事件中新增判斷,成功登入後透過 window.location.href 跳到指定頁面。修改 form 配置:在 lay-filter="login" 的 form 元素中新增 hidden 輸入字段,name 為 "redirect",value 為目標頁面位址。

layui 提供了多種取得表單資料的方法,包括直接取得表單所有欄位資料、取得單一表單元素值、使用formAPI.getVal() 方法取得指定欄位值、將表單資料序列化並作為AJAX 請求參數,以及監聽表單提交事件獲取資料。

layui與Vue的差異主要體現在功能和關注點上。 layui專注於快速開發UI元素,提供預製元件簡化頁面建置;而Vue則是全端框架,注重資料綁定、元件化開發和狀態管理,更適合建構複雜應用程式。 layui學習簡單,適合快速建立頁面;Vue學習曲線陡峭,但有助於建立可擴展且易於維護的應用程式。根據專案需求和開發者技能水平,可以選擇合適的框架。

透過使用layui框架的響應式佈局功能,可以實現自適應佈局。步驟包括:引用layui框架。定義自適應佈局容器,設定layui-container類別。使用響應式斷點(xs/sm/md/lg)隱藏特定斷點下的元素。利用網格系統(layui-col-)指定元素寬度。透過偏移量(layui-offset-)建立間距。使用響應式實用工具(layui-invisible/show/block/inline)控制元素的可見性和顯示方式。

使用 layui 傳輸資料的方法如下:使用 Ajax:建立請求對象,設定請求參數(URL、方法、資料),處理回應。使用內建方法:使用 $.post、$.get、$.postJSON 或 $.getJSON 等內建方法簡化資料傳輸。

layui是一個前端UI框架,它提供了豐富的UI元件、工具和功能,幫助開發人員快速建立現代化、響應式和互動式Web應用程序,特點包括:靈活輕量、模組化設計、豐富的元件、強大的工具和易於自訂。它廣泛應用於各種Web應用程式的開發中,包括管理系統、電商平台、內容管理系統、社交網路和行動裝置應用程式。

layui框架是一款基於JavaScript的前端框架,提供了一套易用的UI元件和工具,幫助開發者快速建立響應式網路應用程式。其特點包括:模組化、輕量級、響應式,並擁有完善的文件和社群支援。 layui廣泛應用於管理後台系統、電商網站和行動裝置應用程式等開發。優點在於上手快、提升效率、維護方便,缺點是客製化較差、技術更新較慢。

layui和vue是前端框架,layui是一種輕量級的函式庫,提供UI元件和工具;vue是一個全面的框架,提供UI元件、狀態管理、資料綁定和路由等功能。 layui基於模組化的架構,vue是基於組件化的架構。 layui擁有較小的生態系統,vue擁有龐大且活躍的生態系統。 layui學習曲線較低,vue學習曲線較陡。 layui適用於小型專案和快速開發UI元件,vue適用於大型專案和需要豐富功能的場景。
