最近,开始我们的Java项目,要求尽量使用bootstrap,因为它比easyUI要好看的多。然后就开始上网查,边查边做,虽然我们引入了一些bootstrap的样式,但是并没有js代码,所有的功能都需要自己用js做。其实并不难,只要我们明白分页的实质就行。说了这么多,就让我们看看分页查询的表格是怎么做出来的吧。

1、引入的css样式

我们需要引入bootstrap自带的表格样式,这样比较好看,如果再需要修改的话,我们就在其基础上再改。

<link rel="stylesheet" type="text/css" href="http://sandbox.runjs.cn/uploads/rs/238/n8vhm36h/bootstrap.min.css"><link rel="stylesheet" type="text/css" href="http://sandbox.runjs.cn/uploads/rs/238/n8vhm36h/bootstrap-responsiv.css"><link rel="stylesheet" type="text/css" href="http://sandbox.runjs.cn/uploads/rs/238/n8vhm36h/dataTables.bootstra.css">

2、需要的HTML文本

这里需要注意的是,每一个标签的id和class名字不要乱改,因为它对应着一些js代码和css样式。如果没有显示出效果,或者显示的效果不是自己想要的,我们可以适当进行微调。

<meta charset="UTF-8">
<title>学生违纪信息</title>
<%-- <%@ include file="/common.jsp"%> --%>
<!-- 封装的一些bootstrap的样式 -->
<%@ include file="/bootstrap.jsp"%>
</head>
<body><!-- 搜索区域  --><div class="row" style="padding-bottom: 20px;margin-top:20px;"><!-- 搜索框的长度为该行的3/4  --><div class="col-md-9"><div class="input-group"><input id="searchString" type="text" style="height:28px;" class="form-control" placeholder="请输入实体名"><span class="input-group-btn"><button type="button" class="btn btn-info" onclick="search()" onkeypress="Enter()"><span class="glyphicon glyphicon-search" aria-hidden="true"/>搜索</button></span></div></div></div><!-- 表格显示 --><div class="row"><div class="col-md-12" style="margin-top:20px;"><div class="panel panel-info"><div class="panel-heading">学生违纪信息</div><table id="table" class="table table-striped table-bordered table-hover datatable"><thead id="tem"><th id="studentId">学号</th><th id="studentName">姓名</th><th id="courseId">考试科目</th><th id="examRoomId">考场号</th><th id="className">班级</th><th id="teacherId">监考人员</th></thead><tbody></tbody></table></div></div></div><!-- 页面底部显示 --><!-- 每页显示几条记录 --><div id="bottomTool" class="row-fluid" ><div class="span6" style="width:25%;;margin-right: 10px;"><div class="dataTables_length" id="DataTables_Table_0_length"><label>每页<select id="pageSize" onchange="research()"aria-controls="DataTables_Table_0" size="1" name="DataTables_Table_0_length"><option selected="selected" value="10">10</option><option value="25">25</option><option value="50">50</option><option value="100">100</option></select>条记录</label></div></div><!-- 显示第 1 至 10 项记录,共 57 项 --><div class="span6" style="width:25%;" ><div  id="DataTables_Table_0_info" class="dataTables_info">显示第 1 至 10 项记录,共 57 项</div></div><!-- 第2页 --><div  class="span6" style="width:30%;"><div  class="dataTables_paginate paging_bootstrap pagination"><ul id="previousNext"><li onclick="previous()" class="prev disabled"><a id="previousPage" href="#">← 上一页</a></li><div id="page" style="float:left;"><select id="pageNum"  onchange="search()"style="width:50PX;margin-right:1px;" aria-controls="DataTables_Table_0" size="1" name="DataTables_Table_0_length"><option selected="selected" value="1">1</option></select></div><li class="next" onclick="next()"><a id="nextPage" href="#">下一页 → </a></li></ul></div></div></div>
</body>
</html>

3、相应的js代码

这里包含了模糊查询事件,回车事件,上一步,下一步,选择页,选择每页显示条数等常用功能,后期再补充排序和选择列的显示和隐藏等。

<script type="text/javascript">//初始化,加载完成后执行window.onload=function(){search();};//搜索按钮绑定回车事件document.onkeydown = function(event){if (event.keyCode == 13) {event.cancelBubble = true;event.returnValue = false;search();}}   //下一步function next(){//得到当前选中项的页号var id=$("#pageNum option:selected").val();//计算下一页的页号var nextPage=parseInt(id)+1;//得到select的option集合var list=document.getElementById("pageNum").options;//得到select中,下一页的optionvar nextOption=list[nextPage-1];//修改select的选中项nextOption.selected=true;//调用查询方法search();}//上一步function previous(){//得到当前选中项的页号var id=$("#pageNum option:selected").val();//计算上一页的页号var previousPage=parseInt(id)-1;//得到select的option集合var list=document.getElementById("pageNum").options;//得到select中,上一页的optionvar previousOption=list[previousPage-1];//修改select的选中项previousOption.selected=true;//调用查询方法search();}//修改每页显示条数时,要从第一页开始查起function research() {//得到select的option集合var list=document.getElementById("pageNum").options;//得到select中,第一页的optionvar nextOption=list[0];//修改select的选中项nextOption.selected=true;//调用查询方法search();}//搜索,模糊查询学生违纪信息function search(){//得到查询条件var searchString=$("#searchString").val();//得到每页显示条数var pageSize=$("#pageSize").val();//得到显示第几页var pageNum=$("#pageNum").val();$.ajax({type: "POST",async: false,url: "queryStudentDisciplineByPage",data:{"searchString":searchString,"pageSize":pageSize,"pageNum":pageNum,},dataType:"text",success: function (data) {//将json字符串转为json对象var pageEntity=JSON.parse(data);//得到结果集var obj=pageEntity["rows"];//将除模板行的thead删除,即删除之前的数据重新加载  $("thead").eq(0).nextAll().remove();   //将获取到的数据动态的加载到table中  for (var i = 0; i < obj.length; i++) {  //获取模板行,复制一行  var row = $("#tem").clone();  //给每一行赋值row.find("#studentId").text(obj[i].studentId); //学号row.find("#studentName").text(obj[i].studentName);   //学生姓名  row.find("#courseId").text(obj[i].courseId);     //课程名称  row.find("#examRoomId").text(obj[i].examRoomId);     //考场号row.find("#className").text(obj[i].className);     //所属班级  row.find("#teacherId").text(obj[i].teacherId);     //监考教师Id//将新行添加到表格中  row.appendTo("#table");  } //当前记录总数var pageNumCount=pageEntity["total"];//当前记录开始数var pageNumBegin=(pageNum-1)*pageSize+1;//当前记录结束数var pageNumEnd=pageNum*pageSize//如果结束数大于记录总数,则等于记录总数if(pageNumEnd>pageNumCount){pageNumEnd=pageNumCount;}//得到总页数var pageCount;if(pageNumCount/pageSize==0){pageCount=pageNumCount/pageSize;}else{pageCount=Math.ceil(pageNumCount/pageSize);}//输出"显示第 1 至 10 项记录,共 57 项"document.getElementById("DataTables_Table_0_info").innerHTML="显示第"+pageNumBegin.toString()+" 至 "+pageNumEnd.toString()+" 项记录,共 "+pageNumCount.toString()+" 项";//显示所有的页码数var pageSelect =document.getElementById("page");var pageOption="";var flag;//删除select下所有的option,清除所有页码document.getElementById("pageNum").options.length=0;for(var i=0;i<pageCount;i++){flag=(i+1).toString();var option;//如果等于当前页码if(flag==pageNum){//实例化一个option,则当前页码为选中状态option=new Option(flag, flag, false, true);}else{option=new Option(flag, flag, false, false);}//将option加入select中document.getElementById("pageNum").options.add(option);}//如果总记录数小于5条,则不显示分页if((pageNumCount-5)<0){document.getElementById("bottomTool").style.display="none";}else{document.getElementById("bottomTool").style.display="";}/**给上一步下一步加颜色**///判断是否只有一页if(pageCount==1){//如果只有一页,上一步,下一步都为灰色$("#previousPage").css("color","#AAA");//给上一步加灰色$("#nextPage").css("color","#AAA");//给下一步加灰色}else if(pageNum-1<1){//如果是首页,则给上一步加灰色,下一步变蓝$("#previousPage").css("color","#AAA");//给上一步加灰色$("#nextPage").css("color","#00F");//给下一步加蓝色}else if(pageNum==pageCount){//如果是尾页,则给上一步加蓝色,下一步灰色$("#previousPage").css("color","#00F");//给上一步标签加蓝色$("#nextPage").css("color","#AAA");//给下一步标签加灰色}else{//上一步为蓝色,下一步为绿色$("#previousPage").css("color","#00F");//给上一步加蓝色$("#nextPage").css("color","#00F");//给下一步加蓝色}}});}</script>

4、效果图

5、总结

经过这些天的努力,实现了最基本的分页查询功能,还包括上一页、下一页以及选择跳页的效果,而且可以进行模糊查询,而且如果记录小于5条就不会产生分页等。后期再加上排序,选择列的显示和影藏就更好了。我们需要做的还很多,只要我们努力,就一定能够做到。

bootstrap——完美的分页查询相关推荐

  1. SpringBoot+Mybatis-Plus+Thymeleaf+Bootstrap分页查询(前后端完整版开源学习)图书管理系统

    目录 分页主要逻辑,在3.7和3.8 1.准备工作 1.1 参考博客 1.2 项目结构 2. 数据库 3. 详细代码部分 3.1 pom依赖 3.2 application.yml 3.3 BookM ...

  2. 完美的 jpa 多表 原生sql 分页查询

    多表分页查询,强烈推荐原生sql 一般需要两个方法,一个查条数,一个查当前页数据 @Query(value = "" +"" +" select &q ...

  3. Mybatis + SpringMVC + Maven实现分页查询

    使用Mybatis + Maven + SpringMVC 运行时,突然被需要分页查询的功能给难住了 这里推荐采用的插件是PageHelper这个插件,使用起来十分方便.该插件支持以下数据库: Ora ...

  4. MySQL百万级数据分页查询及优化

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 来源:https://www.cnblogs.com/geningchao 关注我,回复口令获取可获取 ...

  5. MySQL 百万级数据量分页查询方法及其优化

    来源:http://sina.lt/gauW 方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适 ...

  6. MySQL大数据量分页查询方法及其优化

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:收藏了!7 个开源的 Spring Boot 前后端分离优质项目个人原创+1博客:点击前往,查看更多 链接:ht ...

  7. JavaWeb-综合案例(用户信息)-学习笔记05【分页查询功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  8. Bootstrap4+MySQL前后端综合实训-Day06-PM【MD5加码-生成32位md5码、ResultData.java、分页查询用户数据、添加用户按钮的实现】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目录 MD5加码 生成32位md5码 ResultData.java 分页查询 ...

  9. Bootstrap4+MySQL前后端综合实训-Day06-AM【eclipse详细配置Tomcat、开发web项目、servlet、连接MySQL8.0数据库、用户登录界面的编写与验证、分页查询】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 eclipse重置视图 MySQL数据库--建数据库.建数据库 s ...

最新文章

  1. 在Linux上安装QT4
  2. 转:使用 PHP 直接在共享内存中存储数据集
  3. 一次 .NET Core 中玩锁的经历:ManualResetEventSlim, Semaphore 与 SemaphoreSlim
  4. dhcp服务配置文件/etc/dhcpd.conf详解
  5. hdu 1023 Train Problem II
  6. 一个项目部署多个节点会导致锁失效么_Redis分布式锁
  7. SignalR介绍与Asp.net
  8. 北林oj-算法设计与分析-Simple Count(C++,思路+代码)
  9. Android开发技巧——PagerAdapter再简单的包
  10. 阳明大神---容器时代
  11. SQL中的CASE WHEN THEN使用
  12. 15 个提高 Google 搜索效率的小技巧
  13. python文本聚类dbscan_文本挖掘之文本聚类(DBSCAN)
  14. 词根词缀的实践应用 - 词根词缀词典墨墨详细使用
  15. 关于数学计算机手抄报简单的,数学手抄报简单又漂亮图片
  16. 场景分析法设计测试用例
  17. Ubuntu14.04+cuda6.5+opencv2.4.9+caffe配置记录
  18. 华为云通用计算增强型C6到底怎么样?
  19. 1024程序员节盛大开幕,九大操作系统掌门人、六代技术人齐聚岳麓,见证技术大时代
  20. JAVA开发运维(关于渗透测试与漏洞修复)

热门文章

  1. java soap附件_Axis2用法:soap消息携带附件
  2. Hive性能调优实战 分享
  3. freeMark的入门教程
  4. ajax下拉列表模糊,JS仿百度自动下拉框模糊匹配提示
  5. 上海python周末培训班_上海python周末班
  6. python爬取某城市各监测站点历史空气质量数据
  7. 看VIKI智能语音机器人如何在“五一小长假”帮助企业获客
  8. 谈一谈安全运营工作是什么
  9. 关于ES6的一些浅薄的看法(1)
  10. vsftpd配置文件讲解