前端分页
文章目录
- 前端分页
- 前言
- 一、后台的传入数据
- 二、前端页面准备步骤
- 1.准备一个div
- 2.在上方引入jquery.js文件
- 3.js代码
- 总结
前言
当后台通过写查询得到多条数据时,不在使用数据库分页,直接返回查询的全部数据,在前台直接通过前端js进行分页处理:
一、后台的传入数据
示例:
List list = forderService.selectList();
model.addAttribute(“list”, list);
二、前端页面准备步骤
1.准备一个div
在这个div里面会放入一个table表格和一个小div(用来显示分页按钮,例如上一页,下一页,页码跳转等等)
代码如下(示例):
<div class="well">
<table class="table">
<thead>
<tr>
<th>
订单编号
</th>
<th>
收货人
</th>
<th>
电话
</th>
<th>
备注
</th>
<th>
时间
</th>
<th>
金额
</th>
<th>
邮编
</th>
<th>
地址
</th>
<th>
状态
</th>
<th>
编辑
</th>
<th>
订单项
</th>
</tr>
</thead>
<tbody id="pageMain">
<c:forEach items="${list}" var="item">
<tr>
<td style="width:200px;">
${item.fid}
</td>
<td>
${item.name}
</td>
<td>
${item.phone}
</td>
<td>
${item.remark}
</td>
<td>
<fmt:formatDate value="${item.date}" pattern="yyyy-MM-dd"/>
</td>
<td>
${item.total}
</td>
<td>
${item.post}
</td>
<td>
${item.address}
</td>
<td>
<c:if test="${item.status=='0'}">
未付款
</c:if>
<c:if test="${item.status=='1'}">
已付款
</c:if>
<c:if test="${item.status=='-1'}">
无效
</c:if>
</td>
<td>
<a href="<%=basePath%>order/delete?fid=${item.fid}">删除</a>
</td>
<td>
<a href="<%=basePath%>sorder/listbyfid?fid=${item.fid}">查看订单项</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<div id="pageBox">
<span class="btn btn-outline-secondary" id="prev">上一页</span>
<ul id="pageNav">
<a href="javascript:;" class="active">1</a>
<a href="javascript:;">2</a>
<a href="javascript:;">3</a>
<a href="javascript:;">4</a>
<a href="javascript:;">5</a>
<a href="javascript:;">6</a>
<a href="javascript:;">7</a>
<a href="javascript:;">8</a>
</ul>
<span class="btn btn-outline-secondary" id="next">下一页</span>
<span id="curye"></span>
</div>
</div>
2.在上方引入jquery.js文件
代码如下(示例):
两种引入方式
第一种
<script src="<%=basePath%>jslib/jquery-1.7.2.min.js"
type="text/javascript"></script>
第二种
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
3.js代码
<script type="text/javascript">
$(function() {
fenye2();
});
function fenye2() {
var tabPage;
tabPage({
pageMain: '#pageMain',
pageNav: '#pageNav',
pagePrev: '#prev',
pageNext: '#next',
curNum: 5,
/*每页显示的条数*/
activeClass: 'active',
/*高亮显示的class*/
ini: 0,
/*初始化显示的页面*/
curye:"#curye"
});
function tabPage(tabPage) {
var pageMain = $(tabPage.pageMain);
/*获取内容列表*/
var pageNav = $(tabPage.pageNav);
/*获取分页*/
var pagePrev = $(tabPage.pagePrev);
/*上一页*/
var pageNext = $(tabPage.pageNext);
/*下一页*/
var curye=$(tabPage.curye);
var curNum = tabPage.curNum;
/*每页显示数*/
var len = Math.ceil(pageMain.find("tr").length / curNum);
/*计算总页数*/
// console.log(len);
var pageList = '';
/*生成页码*/
var iNum = 0;
/*当前的索引值*/
for (var i = 0; i < len; i++) {
pageList += '<a href="javascript:;">' + (i + 1) + '</a>';
}
pageNav.html(pageList);
curye.html("当前是第"+(iNum+1)+"页");
/*头一页加高亮显示*/
pageNav.find("a:first").addClass(tabPage.activeClass);
/*******标签页的点击事件*******/
pageNav.find("a").each(
function () {
$(this)
.click(
function () {
pageNav.find("a").removeClass(
tabPage.activeClass);
$(this).addClass(
tabPage.activeClass);
iNum = $(this).index();
curye.html("当前是第"+(iNum+1)+"页");
$(pageMain).find("tr").hide();
for (var i = ($(this).html() - 1)
* curNum; i < ($(this)
.html())
* curNum; i++) {
$(pageMain).find("tr").eq(i)
.show()
}
});
})
$(pageMain).find("tr").hide();
/************首页的显示*********/
for (var i = 0; i < curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
/*下一页*/
pageNext.click(function () {
$(pageMain).find("tr").hide();
if (iNum == len - 1) {
alert('已经是最后一页');
for (var i = (len - 1) * curNum; i < len * curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
return false;
} else {
pageNav.find("a").removeClass(tabPage.activeClass);
iNum++;
curye.html("当前是第"+(iNum+1)+"页");
pageNav.find("a").eq(iNum).addClass(tabPage.activeClass);
// ini(iNum);
}
for (var i = iNum * curNum; i < (iNum + 1) * curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
});
/*上一页*/
pagePrev.click(function () {
$(pageMain).find("tr").hide();
if (iNum == 0) {
alert('当前是第一页');
for (var i = 0; i < curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
return false;
} else {
pageNav.find("a").removeClass(tabPage.activeClass);
iNum--;
curye.html("当前是第"+(iNum+1)+"页");
pageNav.find("a").eq(iNum).addClass(tabPage.activeClass);
}
for (var i = iNum * curNum; i < (iNum + 1) * curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
})
}
}
</script>
总结
完整的页面代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title>订单列表</title>
<link rel="stylesheet" type="text/css"
href="<%=basePath%>jslib/bootstrap/css/bootstrap.css">
<link rel="stylesheet" type="text/css"
href="<%=basePath%>css/theme.css">
<link rel="stylesheet"
href="<%=basePath%>jslib/font-awesome/css/font-awesome.css">
<script src="<%=basePath%>jslib/jquery-1.7.2.min.js"
type="text/javascript"></script>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<%-- <link--%>
<%-- href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"--%>
<%-- rel="stylesheet">--%>
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<%-- <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->--%>
<%-- <script--%>
<%-- src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>--%>
<script type="text/javascript">
$(function() {
fenye2();
});
function fenye2() {
var tabPage;
tabPage({
pageMain: '#pageMain',
pageNav: '#pageNav',
pagePrev: '#prev',
pageNext: '#next',
curNum: 5,
/*每页显示的条数*/
activeClass: 'active',
/*高亮显示的class*/
ini: 0,
/*初始化显示的页面*/
curye:"#curye"
});
function tabPage(tabPage) {
var pageMain = $(tabPage.pageMain);
/*获取内容列表*/
var pageNav = $(tabPage.pageNav);
/*获取分页*/
var pagePrev = $(tabPage.pagePrev);
/*上一页*/
var pageNext = $(tabPage.pageNext);
/*下一页*/
var curye=$(tabPage.curye);
var curNum = tabPage.curNum;
/*每页显示数*/
var len = Math.ceil(pageMain.find("tr").length / curNum);
/*计算总页数*/
// console.log(len);
var pageList = '';
/*生成页码*/
var iNum = 0;
/*当前的索引值*/
for (var i = 0; i < len; i++) {
pageList += '<a href="javascript:;">' + (i + 1) + '</a>';
}
pageNav.html(pageList);
curye.html("当前是第"+(iNum+1)+"页");
/*头一页加高亮显示*/
pageNav.find("a:first").addClass(tabPage.activeClass);
/*******标签页的点击事件*******/
pageNav.find("a").each(
function () {
$(this)
.click(
function () {
pageNav.find("a").removeClass(
tabPage.activeClass);
$(this).addClass(
tabPage.activeClass);
iNum = $(this).index();
curye.html("当前是第"+(iNum+1)+"页");
$(pageMain).find("tr").hide();
for (var i = ($(this).html() - 1)
* curNum; i < ($(this)
.html())
* curNum; i++) {
$(pageMain).find("tr").eq(i)
.show()
}
});
})
$(pageMain).find("tr").hide();
/************首页的显示*********/
for (var i = 0; i < curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
/*下一页*/
pageNext.click(function () {
$(pageMain).find("tr").hide();
if (iNum == len - 1) {
alert('已经是最后一页');
for (var i = (len - 1) * curNum; i < len * curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
return false;
} else {
pageNav.find("a").removeClass(tabPage.activeClass);
iNum++;
curye.html("当前是第"+(iNum+1)+"页");
pageNav.find("a").eq(iNum).addClass(tabPage.activeClass);
// ini(iNum);
}
for (var i = iNum * curNum; i < (iNum + 1) * curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
});
/*上一页*/
pagePrev.click(function () {
$(pageMain).find("tr").hide();
if (iNum == 0) {
alert('当前是第一页');
for (var i = 0; i < curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
return false;
} else {
pageNav.find("a").removeClass(tabPage.activeClass);
iNum--;
curye.html("当前是第"+(iNum+1)+"页");
pageNav.find("a").eq(iNum).addClass(tabPage.activeClass);
}
for (var i = iNum * curNum; i < (iNum + 1) * curNum; i++) {
$(pageMain).find("tr").eq(i).show()
}
})
}
}
</script>
</head>
<body class="content1">
<div class="header">
<h1 class="page-title">
订单管理
</h1>
</div>
<ul class="breadcrumb">
<li>
<a href="<%=basePath%>/sys/welcome.jsp">Home</a>
<span class="divider">/</span>
</li>
<li class="active">
订单列表
</li>
</ul>
<div class="container-fluid">
<div class="row-fluid">
<div class="well">
<table class="table">
<thead>
<tr>
<th>
订单编号
</th>
<th>
收货人
</th>
<th>
电话
</th>
<th>
备注
</th>
<th>
时间
</th>
<th>
金额
</th>
<th>
邮编
</th>
<th>
地址
</th>
<th>
状态
</th>
<th>
编辑
</th>
<th>
订单项
</th>
</tr>
</thead>
<tbody id="pageMain">
<c:forEach items="${list}" var="item">
<tr>
<td style="width:200px;">
${item.fid}
</td>
<td>
${item.name}
</td>
<td>
${item.phone}
</td>
<td>
${item.remark}
</td>
<td>
<fmt:formatDate value="${item.date}" pattern="yyyy-MM-dd"/>
</td>
<td>
${item.total}
</td>
<td>
${item.post}
</td>
<td>
${item.address}
</td>
<td>
<c:if test="${item.status=='0'}">
未付款
</c:if>
<c:if test="${item.status=='1'}">
已付款
</c:if>
<c:if test="${item.status=='-1'}">
无效
</c:if>
</td>
<td>
<a href="<%=basePath%>order/delete?fid=${item.fid}">删除</a>
</td>
<td>
<a href="<%=basePath%>sorder/listbyfid?fid=${item.fid}">查看订单项</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<div id="pageBox">
<span class="btn btn-outline-secondary" id="prev">上一页</span>
<ul id="pageNav">
<a href="javascript:;" class="active">1</a>
<a href="javascript:;">2</a>
<a href="javascript:;">3</a>
<a href="javascript:;">4</a>
<a href="javascript:;">5</a>
<a href="javascript:;">6</a>
<a href="javascript:;">7</a>
<a href="javascript:;">8</a>
</ul>
<span class="btn btn-outline-secondary" id="next">下一页</span>
<span id="curye"></span>
</div>
</div>
</div>
</div>
</body>
</html>