全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

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参数映射是获取不到的。
以及:

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  # 分页  # 模糊查询  # bootstrap-table组合表头的实现方法  # bootstrap-table实现表头固定以及列固定的方法示例  # Bootstrap-table使用footerFormatter做统计列功能  # bootstrap-table实现服务器分页的示例 (spring 后台)  # bootstrap-table+treegrid实现树形表格  # bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能  # bootstrap-table formatter 使用vue组件的方法  # Bootstrap-table自定义可编辑每页显示记录数  # Node.js中Bootstrap-table的两种分页的实现方法  # bootstrap table 服务器端分页例子分享  # Bootstrap table分页问题汇总  # bootstrap-table后端分页功能完整实例  # 每页  # 的是  # 服务端  # 中有  # 条数  # 主键  # 后端  # 变量名  # 在我  # 在此  # 我有  # 要做  # 考虑到  # 做个  # 自定义  # 请选择  # 量大  # 设置为  # 会将 


相关文章: 佛山企业网站制作公司有哪些,沟通100网上服务官网?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  ui设计制作网站有哪些,手机UI设计网址吗?  高端网站建设与定制开发一站式解决方案 中企动力  建站VPS配置与SEO优化指南:关键词排名提升策略  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  制作企业网站建设方案,怎样建设一个公司网站?  学校为何禁止电信移动建设网站?  个人摄影网站制作流程,摄影爱好者都去什么网站?  建站主机系统SEO优化与智能配置核心关键词操作指南  成都网站制作报价公司,成都工业用气开户费用?  用v-html解决Vue.js渲染中html标签不被解析的问题  css网站制作参考文献有哪些,易聊怎么注册?  如何设计高效校园网站?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  制作网站的软件免费下载,免费制作app哪个平台好?  PHP正则匹配日期和时间(时间戳转换)的实例代码  表情包在线制作网站免费,表情包怎么弄?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  香港服务器租用每月最低只需15元?  金*站制作公司有哪些,金华教育集团官网?  ,sp开头的版面叫什么?  家庭服务器如何搭建个人网站?  北京网站制作公司哪家好一点,北京租房网站有哪些?  广州营销型建站服务商推荐:技术优势与SEO优化解析  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  西安大型网站制作公司,西安招聘网站最好的是哪个?  为什么Go需要go mod文件_Go go mod文件作用说明  安云自助建站系统如何快速提升SEO排名?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  如何破解联通资金短缺导致的基站建设难题?  5种Android数据存储方式汇总  建站之星如何开启自定义404页面避免用户流失?  如何在橙子建站中快速调整背景颜色?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  简历在线制作网站免费,免费下载个人简历的网站是哪些?  常州自助建站工具推荐:低成本搭建与模板选择技巧  内部网站制作流程,如何建立公司内部网站?  音乐网站服务器如何优化API响应速度?  如何自定义建站之星网站的导航菜单样式?  建站之星安装步骤有哪些常见问题?  如何高效利用200m空间完成建站?  如何选择最佳自助建站系统?快速指南解析优劣  Android自定义控件实现温度旋转按钮效果  完全自定义免费建站平台:主题模板在线生成一站式服务  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  宁波免费建站如何选择可靠模板与平台?  制作销售网站教学视频,销售网站有哪些?  如何快速查询网站的真实建站时间?  如何配置FTP站点权限与安全设置? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。