基于Jquery实现表格动态分页实现代码


Posted in Javascript onJune 21, 2011

当页面点击分页图标时,程序会自动去后台获取对应页数的记录。
关键代码如下:
需要引入的css和js文件有:

<link rel="stylesheet" type="text/css" href="<%=basePath %>css/theme/default/css/jpage.css"></link> 
<link ID="skin" rel="stylesheet" type="text/css" href="<%=basePath %>css/config.css" /> 
<script language="javascript" type="text/javascript" src="<%=basePath %>js/jquery.js"></script>

其中jsp页面代码如下:
<script language="jscript" type="text/javascript"> 
var pageIndex = 1; //当前页数 
$(function(){ 
GetPageCount();//获取分页数量以及总的记录条数 
$("#load").hide();//隐藏loading提示 
$("#template").hide();//隐藏模板 
ChangeState(0,1);//设置翻页按钮的初始状态 
bind();//绑定第一页的数据 
//第一页按钮click事件 
$("#first").click(function(){ 
pageIndex = 1; 
ChangeState(0,1); 
bind(); 
}); 
//上一页按钮click事件 
$("#previous").click(function(){ 
pageIndex -= 1; 
ChangeState(-1,1); 
if(pageIndex <= 1){ 
pageIndex = 1; 
ChangeState(0,-1); 
} 
bind(); 
}); 
//下一页按钮click事件 
$("#next").click(function(){ 
pageIndex += 1; 
ChangeState(1,-1); 
if(pageIndex>=pageCount) 
{ 
pageIndex = pageCount; 
ChangeState(-1,0); 
} 
bind(pageIndex); 
}); 
//最后一页按钮click事件 
$("#last").click(function(){ 
pageIndex = pageCount; 
ChangeState(1,0); 
bind(pageIndex); 
}); 
//每页显示记录条数select事件 
$("#pageSize").change(function(){ 
bind(); 
}) 
}); 
//AJAX方法取得数据并显示到页面上 
function bind(){ 
$("#load").show(); 
var pageSize = $("#pageSize").val(); 
$.ajax({ 
type: "get",//使用get方法访问后台 
dataType: "json",//返回json格式的数据 
url: "<%=basePath%>actionSmUser.do?method=listUser2",//要访问的后台地址 
data: "pageIndex=" + pageIndex+"&pageSize="+pageSize,//要发送的数据 
complete : function(msg){//msg为返回的数据,在这里做数据绑定 
$("[id=ready]").remove(); 
var data = eval("("+msg.responseText+")"); 
$.each(data, function(i, n){ 
var row = $("#template").clone(); 
row.find("#userId").text(n.userId); 
row.find("#userName").text(n.userName); 
row.find("#depId").text(n.depId); 
row.find("#createTime").text(n.createTime); 
if(n.createTime !== undefined) row.find("#createTime").text(n.createTime); 
row.find("#creator").text(n.creator); 
row.find("#menusId").text(n.menusId); 
row.find("#isValid").text(n.isValid); 
row.attr("id","ready");//改变绑定好数据的行的id 
row.appendTo("#datas");//添加到模板的容器中 
}); 
$("[id=ready]").show(); 
SetPageInfo(); 
} 
}); 
} 
function ChangeDate(date){ 
return date.replace("-","/").replace("-","/"); 
} 
//设置第几页/共几页的信息 
function SetPageInfo(){ 
var pageCount = $("#pageCount").val(); 
var totalCount = $("#totalCount").val(); 
var pageSize = $("#pageSize").val(); 
$("#pageinfo").html(" 第<input class='default_pgCurrentPage' id='pageIndex' type='text' value='"+pageIndex+ 
"' style='width: 30px' /> 页" + "/" +"共 "+pageCount+"页"+ 
" 检索到 "+totalCount+"条记录,显示第 "+(pageIndex*pageSize-pageSize)+" 条 - 第 "+(pageIndex*pageSize)+" 条记录"); 
} 
//AJAX方法取得分页总数 
function GetPageCount(){ 
var pageSize = $("#pageSize").val(); 
$.ajax({ 
type: "get", 
dataType: "text", 
url: "<%=basePath%>actionSmUser.do?method=getPageCount", 
data: "pageSize="+pageSize , 
async: false, 
success: function(msg){ 
var data = eval("("+msg+")"); 
$("#pageCount").val(data[0].pageCount); 
$("#totalCount").val(data[0].totalCount); 
} 
}); 
} 
//改变翻页按钮状态 
function ChangeState(state1,state2){ 
$("#first").attr("class","default_pgFirst default_pgBtn"); 
$("#previous").attr("class","default_pgPrev default_pgBtn"); 
$("#next").attr("class","default_pgNext default_pgBtn"); 
$("#last").attr("class","default_pgLast default_pgBtn"); 
if(state1 == 1) { 
document.getElementById("first").disabled = ""; 
document.getElementById("previous").disabled = ""; 
}else if(state1 == 0){ 
document.getElementById("first").disabled = "disabled"; 
document.getElementById("previous").disabled = "disabled"; 
$("#first").attr("class","default_pgFirstDisabled default_pgBtn"); 
$("#previous").attr("class","default_pgPrevDisabled default_pgBtn"); 
}if(state2 == 1){ 
document.getElementById("next").disabled = ""; 
document.getElementById("last").disabled = ""; 
}else if(state2 == 0){ 
document.getElementById("next").disabled = "disabled"; 
document.getElementById("last").disabled = "disabled"; 
$("#next").attr("class","default_pgNextDisabled default_pgBtn"); 
$("#last").attr("class","default_pgLastDisabled default_pgBtn"); 
} 
} 
</script>

html页面代码如下:
<body> 
<div> 
<div> 
<br /> 
<table id="datas" align="center" class="listtable" width="100%" bgcolor="#CCCCCC" cellSpacing="1" cellpadding="1" style="margin-top:5px;"> 
<tr class="fixheader"> 
<th width="14%"> 
用户ID</th> 
<th width="14%"> 
用户名称</th> 
<th width="14%"> 
所在科室</th> 
<th width="14%"> 
创建时间</th> 
<th width="14%"> 
创建人</th> 
<th width="14%"> 
菜单集名称</th> 
<th width="14%"> 
是否有效</th> 
</tr> 
<tr id="template" height="22px" bgcolor="#F9FDFF" onmouseover="javascript:this.style.backgroundColor='#FFFFCC'; return true;" onMouseOut="javascript:this.style.backgroundColor='#F9FDFF'; return true;"> 
<td id="userId" class="tdc"> 
</td> 
<td id="userName" class="tdc"> 
</td> 
<td id="depId" class="tdc"> 
</td> 
<td id="createTime" class="tdc"> 
</td> 
<td id="creator" class="tdc"> 
</td> 
<td id="menusId" class="tdc"> 
</td> 
<td id="isValid" class="tdc"> 
</td> 
</tr> 
</table> 
</div> 
<div id="load" style="left: 0px; position: absolute; top: 0px; background-color: red"> 
LOADING.... 
</div> 
<div class="default_pgContainer" > 
<div class="default_container"> 
<div class="default_pgPanel" id="skinDiv"> 
<table class="default_pgToolbar"> 
<tr> 
<td class="black_pgCurrentPage"> 
<select id="pageSize" name="pageSize"> 
<option selected="selected" value="10">10</option> 
<option value="20">20</option> 
<option value="30">30</option> 
</select> 
</td> 
<td> 
<div id="first" class="default_pgFirst default_pgBtn" /> 
</td> 
<td> 
<div id="previous" class="default_pgPrev default_pgBtn" /> 
</td> 
<td class="default_separator"> 
</td> 
<td> 
<div id="next" class="default_pgNext default_pgBtn" /> 
</td> 
<td> 
<div id="last" class="default_pgLast default_pgBtn" /> 
</td> 
<td class="default_separator"> 
</td> 
<td> 
<span id="pageinfo"></span> 
</td> 
</tr> 
</table> 
</div> 
</div> 
</div> 
</div> 
<div id="test"></div> 
<input type="hidden" id="pageCount" style="width: 45px" /> 
<input type="hidden" id="totalCount" style="width: 45px" /> 
</body>

后台action中代码如下:
//分页获取用户信息 
public void listUser2(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response){ 
RequestTool tool = new RequestTool(request); 
Integer pageSize = tool.getIntParameter("pageSize"); 
Integer pageIndex = tool.getIntParameter("pageIndex"); 
ResultPage res = serviceSmUserImpl.findAllSmUsers(pageIndex, pageSize); 
List<SmUser> smUserList = (List<SmUser>)res.getResult(); 
JSONArray array = new JSONArray(); 
JSONObject object ; 
for(SmUser user:smUserList){ 
object = new JSONObject(); 
object.put("userId", user.getUserId()); 
object.put("userName",user.getUserName()); 
object.put("depId", user.getOrganCode()); 
object.put("createTime", user.getCreateTime()); 
object.put("creator", user.getCreator()); 
object.put("menusId", user.getMenusId()); 
object.put("isValid", (user.getValid().equals("1")?"有效":"无效")); 
array.add(object); 
} 
AjaxTool.returnAjaxResponse(response, array.toJSONString()); 
} 
//获取总的记录数和总页数 
public void getPageCount(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response){ 
RequestTool tool = new RequestTool(request); 
int pageSize = tool.getIntParameter("pageSize"); 
List<POJO> pojos = serviceSmUserImpl.findAll(); 
int pageCount = pojos.size()% pageSize > 0 ? (pojos.size()/ pageSize+1):(pojos.size()/ pageSize); 
JSONArray array = new JSONArray(); 
JSONObject object = new JSONObject(); 
object.put("pageCount", pageCount); 
object.put("totalCount", pojos.size()); 
array.add(object); 
AjaxTool.returnAjaxResponse(response,array.toJSONString()); 
}

文件打包下载
Javascript 相关文章推荐
JavaScript 数组运用实现代码
Apr 13 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
Mar 05 Javascript
jQuery实现可用于博客的动态滑动菜单
Mar 09 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
jquery.Callbacks的实现详解
Nov 30 Javascript
JavaScript设计模式之单例模式详解
Jun 09 Javascript
React-Native 组件之 Modal的使用详解
Aug 08 Javascript
vue数据操作之点击事件实现num加减功能示例
Jan 19 Javascript
详解vue项目中调用百度地图API使用方法
Apr 25 Javascript
JS数组方法slice()用法实例分析
Jan 18 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 Javascript
ES6学习教程之Promise用法详解
Nov 22 Javascript
基于jquery实现的表格分页实现代码
Jun 21 #Javascript
jquery异步请求实例代码
Jun 21 #Javascript
读jQuery之九 一些瑕疵说明
Jun 21 #Javascript
读jQuery之八 包装事件对象
Jun 21 #Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
Jun 21 #Javascript
读jQuery之六 缓存数据功能介绍
Jun 21 #Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
Jun 20 #Javascript
You might like
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
Python文件及目录操作实例详解
2015/06/04 Python
python实现多线程抓取知乎用户
2016/12/12 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
美国派对用品及装饰品网上商店:Shindigz
2016/07/30 全球购物
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
学生无故旷课检讨书
2014/09/20 职场文书
兴趣班停课通知
2015/04/24 职场文书
2016党员党课心得体会
2016/01/07 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python