(首页上一页下一页尾页 + 下拉框跳转)分页功能
说在前头(本人用的是bootstrap +jQuery 和 struts2 + MVC)不影响分页功能
制作一个分页功能:
效果如下:
由上图可知,此功能只适合页数不是特别多的情况下,页数多的时候,每次都要求得总记录数,太慢了。
【一】:1、总记录数,2、总页数,3、每页记录数,4、当前页
【二】:首页,上一页,下一页,尾页
【三】:直接跳转
一、java后台分页model
省略了get,set函数,和构造函数
public class PageModel<T> {private int pageSize; //分页每一页的记录数private int pageNum=1; //当前页号private int totalCount; //总记录数private List<T> result; //整个记录//totalpage 总页数,通过计算 直接get得到/*。。。。。。。*/public int getTotalPage(){return (totalCount - 1) / pageSize + 1;}/*。。。。。*/
}
二、DAO层
这层就不写了,主要就是获取列表
sql 语句我用的是 StringBuilder ,动态添加需要的参数
int totalCount = queryForInt(countSql.toString(), params.toArray());
List<ProductBean> result = query(ProductBean.class,sql.toString(), params.toArray());PageModel<ProductBean> pageModel = new PageModel<ProductBean>(pageSize,pageNum,totalCount,result);
三、Action层
private PageModel<ProductBean> pageModel ;
private List<KindBean> upList ;
private List<KindBean> dols;
private int pagesize=2;//初始化,为了第一次进来能有个值
private int pagenum = 1;//同上
参数:省略get,set
public int getPagebegin(){return (pagenum-1)*pagesize;
}
public int getPageend(){int a=pagenum*pagesize-1 , b=pageModel.getResult().size()-1;//注意这个,两个都要-1if(a < b) return a;else return b;
}
在以上get,set以外,再加两个
System.out.println("page:" +pagesize + " " + pagenum );
pageModel = dao.searchForPage(pagesize, pagenum);
if(pageModel.getResult().size() == 0 ){return "error";
}
获得到pagesize 和pagenum,再将要用的值传到DAO层,去数据库里找值,
【注意】当size为0时要返回错误,跳向没有数据的查询失败页面
四、JSP层
<s:iterator value="pageModel.result " var="pro" begin="pagebegin " end="pageend "><div></div>
</s:iterator>
中间加上循环的部分,pagebegin 直接会调用 后面的getPagebegin函数,pageend同理。
<div class="row" style="text-align:center"><div class="col-md-6"><span>共有</span><span class="text-primary"> ${pageModel.totalCount } </span><span>条记录 共</span> <span class="text-primary"> ${pageModel.totalPage } </span><span>页 每页</span><span class="text-primary"> ${pageModel.pageSize } </span><span>条记录 当前</span><span class="text-primary"> ${pageModel.pageNum } / ${pageModel.totalPage } </span><span>页</span></div><div class="col-md-6"><span><a href="productAction?pagenum=1 " >首页</a> <s:if test="pageModel.pageNum == 1"><a href="productAction?pagenum=1" >上一页</a> </s:if><s:else><a href="productAction?pagenum=${pageModel.pageNum-1 } >上一页</a> </s:else><s:if test="pageModel.pageNum == pageModel.totalPage"><a href="productAction?pagenum=${pageModel.totalPage } >下一页</a> </s:if><s:else><a href="productAction?pagenum=${pageModel.pageNum+1 } >下一页</a> </s:else><a href="productAction?pagenum=${pageModel.totalPage } >尾页</a> </span><span>转到</span><select class="control" id="pagenum" name="pageModel.pageNum" οnchange="turnPage()" style="width:40px" ><s:iterator var="num" begin="1" end="pageModel.totalPage"><option value="${num }" >${num }</option></s:iterator></select><span>页</span></div>
</div>
【一】:应该没什么号说明的,直接取出值来
【二】:分页的时候,首页和尾页直接就是固定值。上一页和下一页要判断一下。
【三】:重点一、在于下拉框里的值从1到总页数,重点二、onchange函数,
jquery:
// 选框跳转页面
function turnPage(){var num = $("#pagenum").val();//alert(num );window.location.href="productAction?pagenum="+num;
}
这个时候看似完美了,你会发现还缺少一点,因为跳转完后,下拉框的值还是原来的1,所以这个也要进行改变。
jsp:
<!-- 用来将当前页面的值设置到 页面跳转框里 -->
<input type="hidden" id="pageNum" name="pageNum" value="${pageModel.pageNum }" >
jquery:
$(function(){//设置跳转页面框里的值$("#pagenum").val( $("#pageNum").val());
});
可以再优化的部分:
【一】可以用ajax分页,这样不刷新网页,更好
(首页上一页下一页尾页 + 下拉框跳转)分页功能相关推荐
- html 下拉框a标签跳转,html下拉框跳转问题
满意答案 woaidaowai 2016.07.16 采纳率:49% 等级:11 已帮助:3910人 两个下拉框,第一个里面有A,B两个选项,第二个里面有X,Y两个选项.后面有一个按钮.怎么做到 ...
- html下拉列表框跳转,html下拉框跳转问题怎么弄?
满意答案 dsfjd66fc 2016.07.01 采纳率:44% 等级:5 已帮助:56人 两个下拉框,第一个里面有A,B两个选项,第二个里面有X,Y两个选项.后面有一个按钮.怎么做到选A和X ...
- Vue3.0 使用 ref 判断目标 node 区域之外的点击事件(实现下拉框、弹窗关闭功能)
有时候会遇到点击目标区域绑定事件 / 展示效果,然后点击目标区域之外的地方就关闭效果 / 触发另一事件,为了实现这样的功能,我们需要通过比对 node 节点来进行判断,在下面我会使用 Vue3.0 的 ...
- LayUi数据表格数据太多导致下拉框卡顿问题
LayUi数据表格数据太多导致下拉框卡顿问题 layui数据表格(详见官网) 根据官网示例 做出数据表格 示例根据官网表格展示 在layui官网 数据表格示例中 https://www.layui.c ...
- c mvc ajax 返回下拉框,SpringMVC之ajax+select下拉框交互常用方式
Insert title here //ajax+select三种常用交互方式 window.οnlοad=function(){ test(); } function test(){ alert(& ...
- tkinter绘制组件(10)——组合框/下拉框
tkinter绘制组件(10)--组合框/下拉框 引言 构思 样式与功能(初次构想) 样式与功能(二次构想) 布局 函数结构 闭合状态下拉框 选项框 整合选项框 展开与闭合 完整代码函数 效果 测试代 ...
- 使用bootstrap实现下拉框搜索功能
背景 公司的小二后台有一个下拉框选择经销商的功能,由于选择的经销商过多,因此添加搜索功能. 前提 配置好Bootstrap相关的开发环境 主要内容 <div class="form-g ...
- 解决kendo ui的kendoDropDownList当下拉框在屏幕上方时,下拉框列表的数据窜位的问题
kendoUI相关问题 我们有的人在使用kendo的下拉列表时,可能会出现下拉列表的框表分离的情况 解决方法就是:将body设置为决定路径 但是这种方式只适合谷歌,火狐,IE等常规浏览器,在360极速 ...
- php可输入的下拉框,jQuery实现可输入搜索文字的下拉框实例代码
利用jQuery实现可输入搜索文字的下拉框 先看效果 功能:点击下拉框输入框时,自动显示下面的下拉列表,而且是根据输入框中输入的搜索添加,自动在后台查找,然后传到前台,展现页面. 用的的js: var ...
最新文章
- sqlyog设置自动补全_sqlyog智能提示如何设置?sqlyog智能提示设置流程介绍
- 555定时器回差电压计算公式_555时基电路引脚解析
- .NET Core中使用Razor模板引擎
- 高级php程序员,php高级程序员该学什么
- openmv探索_4_AprilTag标记追踪
- leetcode [35]搜索插入位置/Search Insert Position 优雅的暴力可能比二分查找效率更高
- 拟阵论 贪心策略的数学基础
- 开源的东西,只是用来参考学习,要商用路途遥远
- [Js-Java SE]文件/文件夹复制(递归)
- flash 绘图API:绘制秀曲线图形
- pci规划的三个原则_LTE中PCI规划目的和原则
- python+scapy实现ARP欺骗
- codeforces 1567 A. Domino Disaster
- MFC9.0 Outlook控件的标题显示无法修改
- Ping IP时出现 request time out怎么解决?
- 开始topcoder
- Android Manifest详解
- 基于51单片机SJA1000 CAN通讯实现(C语言程序)
- Boom!!!计算机系统,从理解到爆炸,Bomblab
- CAS SSO 单点登录 【完整版】