Bootstrap table学习笔记(2) 前后端分页模糊查询

作者:邓晓晖 时间:2024-04-29 13:12:22 

在使用过程中,一边看文档一边做,遇到了一些困难的地方,在此记录一下,顺便做个总结:

1、前端分页
2、后端分页
3、模糊查询

前端分页相当简单,在我添加了2w条测试数据的时候打开的很流畅,没有卡顿。


$(function(){
 a();

});
 function a () {
   $('#yourtable').bootstrapTable({
     url: "/user/getUserList/",
     method:"post",
     dataType: "json",
     striped:true,//隔行变色
     cache:false,  //是否使用缓存
     showColumns:false,// 列
     pagination: true, //分页
     sortable: false, //是否启用排序
     singleSelect: false,
     search:false, //显示搜索框
     buttonsAlign: "right", //按钮对齐方式
     showRefresh:false,//是否显示刷新按钮
     sidePagination: "client", //客户端处理分页服务端:server
     pageNumber:"1",//启用插件时默认页数
     pageSize:"15",//启用插件是默认每页的数据条数
     pageList:[10, 25, 50, 100],//自定义每页的数量
     undefinedText:'--',
     uniqueId: "id", //每一行的唯一标识,一般为主键列
     queryParamsType:'',
     columns: [
       {
         title: 'ID',
         field: 'id',
         align: 'center',
         valign: 'middle',
       },
       {
         title: '用户姓名',
         field: 'name',
         align: 'center',
         valign: 'middle',
       },
       {
         title: '性别',
         field: 'sex',
         align: 'center',
       },
       {
         title: '用户账号',
         field: 'username',
         align: 'center',
       },
       {
         title: '手机号',
         field: 'phone',
         align: 'center',
       },
       {
         title: '邮箱',
         field: 'email',
         align: 'center',
       },
       {
         title: '权限',
         field: 'rolename',
         align: 'center',
       },
       {
         title: '操作',
         field: 'id',
         align: 'center',
         formatter:function(value,row,index){
//value 能够获得当前列的值
//====================================

var e = '<button href="#" class="btn btn-default" mce_href="#" onclick="edit(\''+ row.id + '\')">编辑</button> ';
           var d = '<button href="#" class="btn btn-default" mce_href="#" onclick="del(\''+ row.id +'\')">删除</button> ';
           return e+d;
         }
       }
     ]
   });

}

考虑到以后的数据会越来越多,前端分页在数据量大的情况下,明显不能满足要求,因此必须要做后端的分页

首先:

sidePagination: "server",//服务器分页

queryParams: queryParams,//传递参数(*)


//得到查询的参数
   function queryParams (params) {
     var temp = {  //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
       pageSize: params.pageSize,  //页面大小
       pageNumber: params.pageNumber, //页码
       username: $("#search_username").val(),
       name:$("#search_name").val(),
       sex:$("#search_sex").val(),
       phone:$("#search_mobile").val(),
       email:$("#search_email").val(),
     };
     return temp;
   };

这里传入了每页显示的条数、以及当前的页数。如果需要查询,则需要传入需要查询的条件。

具体的js如下:


$(function(){
 a();

});
 function a () {
   $('#userListTable').bootstrapTable({
     url: "/user/getUserList/",
     method:"post",
     dataType: "json",
     contentType: "application/x-www-form-urlencoded",
     striped:true,//隔行变色
     cache:false,  //是否使用缓存
     showColumns:false,// 列
     toobar:'#toolbar',
     pagination: true, //分页
     sortable: false,           //是否启用排序
     singleSelect: false,
     search:false, //显示搜索框
     buttonsAlign: "right", //按钮对齐方式
     showRefresh:false,//是否显示刷新按钮
     sidePagination: "server", //服务端处理分页
     pageNumber:"1",
     pageSize:"15",
     pageList:[10, 25, 50, 100],
     undefinedText:'--',
     uniqueId: "id", //每一行的唯一标识,一般为主键列
     queryParamsType:'',
     queryParams: queryParams,//传递参数(*)
     columns: [
       {
         title: 'ID',
         field: 'id',
         align: 'center',
         valign: 'middle',
       },
       {
         title: '用户姓名',
         field: 'name',
         align: 'center',
         valign: 'middle',
       },
       {
         title: '性别',
         field: 'sex',
         align: 'center',
       },
       {
         title: '用户账号',
         field: 'username',
         align: 'center',
       },
       {
         title: '手机号',
         field: 'phone',
         align: 'center',
       },
       {
         title: '邮箱',
         field: 'email',
         align: 'center',
       },
       {
         title: '权限',
         field: 'rolename',
         align: 'center',
       },
       {
         title: '操作',
         field: 'id',
         align: 'center',
         formatter:function(value,row,index){
           var e = '<button href="#" class="btn btn-default" mce_href="#" onclick="edit(\''+ row.id + '\')">编辑</button> ';
           var d = '<button href="#" class="btn btn-default" mce_href="#" onclick="del(\''+ row.id +'\')">删除</button> ';
           return e+d;
         }
       }
     ]
   });

//得到查询的参数
   function queryParams (params) {
     var temp = {  //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
       pageSize: params.pageSize,  //页面大小
       pageNumber: params.pageNumber, //页码
       username: $("#search_username").val(),
       name:$("#search_name").val(),
       sex:$("#search_sex").val(),
       phone:$("#search_mobile").val(),
       email:$("#search_email").val(),
     };
     return temp;
   };
 }

//搜索
function serachUser() {
 $("#userListTable").bootstrapTable('refresh');
}

*值得注意的是:

contentType:  "application/x-www-form-urlencoded",//因为bootstap table使用的是ajax方式获取数据,这时会将请求的content type默认设置为 text/plain,这样在服务端直接通过 @RequestParam参数映射是获取不到的。
以及:

Bootstrap table学习笔记(2) 前后端分页模糊查询

HTML:


<div id="page-content" class="animated fadeInRight">
 <div class="col-sm-4 col-md-3 col-lg-3" style="width: 100%;">
   <form  id="search_User">
     <div class="panel-body search_box">
       <div class="search_div">
         <label for="search_name">用户姓名:</label>
         <input type="text" class="form-control" id="search_name" name="UserV2.name" >
       </div>
       <div class="search_div">
         <label for="search_mobile">手机号:</label>
         <input type="text" class="form-control" id="search_mobile" name="UserV2.phone" >
       </div>
       <div class="search_div">
         <label for="search_sex">性别:</label>
         <select class="form-control" id="search_sex" name="UserV2.sex"><option value="">---请选择---</option><option value="男">男</option><option value="女">女</option></select>
       </div>
     </div>
     <div class="panel-body search_box">
       <div class="search_div">
         <label for="search_name">用户账号:</label>
         <input type="text" class="form-control" id="search_username" name="UserV2.username" >
       </div>
       <div class="search_div">
         <label for="search_name">用户Email:</label>
         <input type="text" class="form-control" id="search_email" name="UserV2.email" >
       </div>
       <div class="search_div" style="text-align: center;">
         <input type="button" class="btn btn-primary btn_search" value="搜索" onclick="serachUser()"/>
       </div>
     </div>
   </form>
 </div>
 <table id="userListTable" ></table>
</div>

不论是初始化表格还是搜索的时候传入后台的数据如下:

 pageSize=15   pageNumber=1  username=   name=   sex=   phone=   email=  

返回数据:

我们要返回两个值: rows     total

rows:我们查询到的数据

total:数据总数(此总数指的是所有数据的总数,并不是单页的数量,比如说我有user表中有100条数据,我的limit 0,15,所以我的rows中有15条数据,但是total=100)


{
 "total": 2,
 "rows": [
   {
     "email": "39385908@qq.com",
     "id": 1,
     "name": "邓某某",
     "password": "",
     "phone": "12345678911",
     "rolename": "平台管理员",
     "sex": "男",
     "username": "admin"
   },
   {
     "email": "2222@222.com",
     "id": 8,
     "name": "王小二1",
     "password": "",
     "phone": "13245678910",
     "rolename": "",
     "sex": "男",
     "username": "admin2"
   }
 ]
}

有了total总数,加上之前的pageSize以及rows,bootStraptable会为我们自动生成和分页有关的元素:

效果图:

Bootstrap table学习笔记(2) 前后端分页模糊查询

标签:Bootstrap,table,分页
0
投稿

猜你喜欢

  • python中的插值 scipy-interp的实现代码

    2022-02-23 02:50:09
  • 微信小程序实现签字功能

    2024-04-16 09:26:12
  • 对Python中 \\r, \\n, \\r\\n的彻底理解

    2022-09-14 07:00:15
  • Django使用中间件解决前后端同源策略问题

    2022-09-05 10:33:32
  • Python脚本实时处理log文件的方法

    2021-02-23 06:40:32
  • SQL Server 2008 R2 超详细安装图文教程

    2024-01-24 16:41:12
  • 基于OpenCV4.2实现单目标跟踪

    2022-04-06 07:58:17
  • 实用的Go语言开发工具及使用示例

    2024-04-26 17:25:25
  • Python3之手动创建迭代器的实例代码

    2021-10-15 21:00:30
  • 在ASP.NET 2.0中操作数据之十二:在GridView控件中使用TemplateField

    2023-07-07 07:02:50
  • 详细讲解如何为MySQL数据库添加新函数

    2008-11-27 17:06:00
  • Python3中configparser模块读写ini文件并解析配置的用法详解

    2022-11-02 12:11:14
  • flask-socketio实现WebSocket的方法

    2022-09-25 17:26:24
  • 基于模板引擎Jade的应用(详解)

    2024-05-11 10:14:57
  • SQL Server 2016 CTP2.3 的关键特性总结

    2024-01-19 12:30:33
  • Python实现PS图像抽象画风效果的方法

    2022-10-25 14:08:42
  • SQL CASE 表达式的具体使用

    2024-01-28 09:57:29
  • python写的一个文本编辑器

    2021-10-12 08:38:04
  • 基于jQuery实现的立体文字渐变效果

    2009-05-18 19:15:00
  • Jquery练习之表单验证实现代码

    2023-07-02 05:30:59
  • asp之家 网络编程 m.aspxhome.com