layui資料表格搜尋
簡單介紹
我是通過Servlet傳遞json給layui資料表格模組,實現遍歷操作的,不過資料量大的話還是需要搜尋功能的。這是我參考網上大佬程式碼寫出的搜尋功能。
實現原理
要實現搜尋功能,肯定需要連結資料庫並在資料庫根據相應的欄位查詢,把查詢結果再返回到layui資料表格,因為需要展示我們在資料庫查詢到的資料,所以需要過載表格,也就是隻重新整理一下表格。
實現方法
首先獲取到自己的搜尋框的資料,把資料傳到過載模組的where中傳到後臺,給搜尋設定點選事件,通過url把where中的搜尋框內容以json形式傳遞到Servlet中,Servlet呼叫dao層的查詢方法,最後Servlet把從資料庫搜尋到的資料通過json形式傳遞給layui資料表格。
原始碼
index.html
<html> <head> <meta charset="utf-8"> <title>學生資訊表</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <script type="text/javascript" src="js/vue.min.js"></script> <script src="js/jquery-3.3.1.js"></script> <script src="layui/layui.js" charset="utf-8"></script> <link rel="stylesheet" href="layui/css/layui.css" tppabs="http://res.layui.com/layui/dist/css/layui.css" media="all"> </head> <body> <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;"> <legend>學生資訊表</legend> </fieldset> <table class="layui-hide" id="test" lay-filter="test"> </table> <script type="text/html" id="toolbarDemo"> <div class="demoTable"> 搜尋ID: <div class="layui-inline"> <input class="layui-input" name="id" id="demoReload" autocomplete="off"> </div> <button class="layui-btn" type="button" id="search_btn" data-type="reload">搜尋</button> </div> </script> <script type="text/html" id="barDemo"> <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> </script> <script> </script> <script> layui.use('table', function(){ var table = layui.table; var $ = layui.jquery; table.render({ elem: '#test' ,url:'ShowAllServlet' ,toolbar: '#toolbarDemo' //開啟頭部工具欄,併為其繫結左側模板 ,defaultToolbar: ['filter', 'exports', 'print', { //自定義頭部工具欄右側圖示。如無需自定義,去除該引數即可 title: '提示' ,layEvent: 'LAYTABLE_TIPS' ,icon: 'layui-icon-tips' }] ,title: '使用者資料表' ,id: 'test' ,cols: [[ {type: 'checkbox', fixed: 'left'} ,{field:'id', title:'ID', width:320, unresize: true, sort: true} ,{field:'name', title:'姓名', width:320, edit: 'text'} ,{field:'sex', title:'性別', width:320, edit: 'text'} ,{field:'birthday', title:'出生日期', width:320,edit: 'text'} ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:200} ]] ,page: true }); $(document).on('click','#search_btn',function (data) { var search = $('#demoReload'); //search是jQuery獲取的輸入框物件 table.reload('test',{ where:{ id : search.val() //where裡面是傳遞到後臺的值,我傳遞的是學生的學號id }, url:'SelectServlet' //url寫你自己的servlet,這個servlet要接受where傳遞的資料並返回從資料庫搜尋的資料。 , page: { curr:1 //這裡不用改,意思是從第一頁開始過載表格 } }); }); //監聽行工具事件 del table.on('tool(test)', function(obj){ var data = obj.data; console.log(obj.data.id); console.log(obj.data.name); console.log(obj.data.sex); console.log(obj.data.birthday); //console.log(obj) if(obj.event === 'del'){ layer.confirm('真的刪除行麼', function(index){ $.ajax({ url: "DeleteServlet", type: "POST", data: {id: data.id}, success: function (msg) { if (msg == "ok") { //刪除這一行 obj.del(); //關閉彈框 layer.close(index); layer.msg('刪除成功!',function() {time:2000}) } else { layer.msg("刪除失敗", function() {time:2000}); } } }); return false; }); } else if(obj.event === 'edit'){ layer.confirm('更改為以下資訊<br>'+ '<br>姓名: '+ data.name +'<br>性別: ' +data.sex +'<br>出生日期: ' +data.birthday, function(index){ $.ajax({ url: "UpdateServlet", type: "POST", data: {id: data.id,name: data.name,sex: data.sex,birthday: data.birthday}, success: function (msg) { if (msg == "ok") { //刪除這一行 //關閉彈框 layer.close(index); layer.msg('修改成功!',function() {time:2000}) } else { layer.msg("修改失敗", function() {time:2000}); } } }); return false; }); } }); }); </script> </body> </html>
SelectServlet.java(Servlet)
import COM.Bean.student; import COM.Dao.mannger; import com.fasterxml.jackson.databind.ObjectMapper; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @WebServlet(name = "SelectServlet", value = "/SelectServlet") public class SelectServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8");//設定相應的文字型別 response.setContentType("text/html;charset=utf-8");//設定響應型別,並防止中文亂碼 ArrayList<student> stulist = new ArrayList<>(); mannger dao = new mannger(); String id = request.getParameter("id"); //接收where中的id欄位 dao.select(stulist,id); int count1 = stulist.size(); String count = ""+ count1; Map<String, Object> result = new HashMap<String, Object>(); //下面是把arraylist轉成layui需要的json形式。 //System.out.println(paperslist); result.put("code", 0); result.put("msg", ""); result.put("count",count); result.put("data",stulist); System.out.println(result); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString (result); response.getWriter().print(json.toString()); System.out.println(result); } }
效果截圖
到這裡就結束了,有不懂的可以私信哦。
「其他文章」
- 【演算法篇】刷了兩道大廠面試題,含淚 ”重學陣列“
- 2022 開源軟體安全狀況報告:超 41% 的企業對開源安全沒有足夠的信心
- JavaScript中async和await的使用以及佇列問題
- Flex & Bison 開始
- Obsidian基礎教程
- 分享自己平時使用的socket多客戶端通訊的程式碼技術點和軟體使用
- iNeuOS工業網際網路作業系統,增加2154個檢視建模(WEB組態)行業向量圖元、大屏背景及相關圖元
- 多臺雲伺服器的 Kubernetes 叢集搭建
- Elasticsearch學習系列四(聚合搜尋)
- 關於swiper外掛在vue2的使用
- 使用 Abp.Zero 搭建第三方登入模組(一):原理篇
- LVGL庫入門教程 - 顏色和影象
- Node.js精進(4)——事件觸發器
- 物聯網?快來看 Arduino 上雲啦
- SpringBoot JWT Redis 開源知識社群系統
- CVPR2022 | 可精簡域適應
- Spring框架系列(3) - 深入淺出Spring核心之控制反轉(IOC)
- 面試突擊59:一個表中可以有多個自增列嗎?
- CVPR2022 | 弱監督多標籤分類中的損失問題
- JDBC、ORM、JPA、Spring Data JPA,傻傻分不清楚?一文帶你釐清箇中曲直,給你個選擇SpringDataJPA的...