`
xxprcm
  • 浏览: 3918 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

基于jquery的js+ajax分页控件

阅读更多
自己写的一个基于jquery的js+ajax分页控件,希望对大家有帮助!源代码及例子在附件中,欢迎大家下载并根据自己的需要修改。
/**
*container:div容器
*totalRecordCount:总记录条数
*pageSize:页面大小
*dataUrl:ajax请求路径
*callBack:ajax 回调函数
*/
function PageControl(container,totalRecordCount,pageSize,dataUrl,callBack){
	this.pageSize = pageSize || 10;//页面大小
	this.currentPage = 1;//当前页,默认为1
	this.totalRecordCount = totalRecordCount || 0;//总记录条数
	this.dataUrl = dataUrl || "";
	this.container = container;//装载分页控件的容器
	this.pageCount = this.div(this.totalRecordCount,this.pageSize);
	this.callBack = callBack;
}
PageControl.prototype = {
	div:function(firstNum, secondNum){
        var n1 = Math.round(firstNum); 
        var n2 = Math.round(secondNum); 
        var rslt = parseInt(n1 / n2); 
        var m = n1 % n2;
        return m>0?rslt+1:rslt;
        
    },
    /**
     * 跳转到某一页
     */
    goToPage:function(pageNum){
    	this.currentPage = pageNum;
    	this.paint();
    	this.getAjax(pageNum,this);
    },
    /*
     * 上一页
     */
    prevPage:function(){
    	this.currentPage = this.currentPage<=1?1:this.currentPage-1;
    	this.goToPage(this.currentPage);
    },
    /**
     * 下一页
     */
    nextPage:function(){
    	this.currentPage = this.currentPage>=this.pageCount?this.pageCount:this.currentPage+1;
    	this.goToPage(this.currentPage);
    	
    },
    getAjax:function(pagNum,instance){//调用jquery ajax get请求
    	if(this.dataUrl==="")return;
    	var str = (this.dataUrl.indexOf("?")>=0?"&":"?")+"pageSize="+this.pageSize+"&pageNum="+this.currentPage+"&r="+Math.random();
    	var url = this.dataUrl + str; 
    	try{
	    	$.get(url,function(data){
	    		if(typeof(instance.callBack)!="undefined" && instance.callBack!=null ){
	    			instance.callBack(data,instance);
	    		}
	    	});
    		
    	}catch(e){
    		throw e;
    	}
    },
    paint:function(){
    	var strArr = [];
    	if(this.currentPage>1)
    		strArr.push("<div id='divPageControlPrev' class='page-control-forward'><a href='javascript:void(0);'>< Prev</a></div>");
    	var _t = 8;
    	var size = 5;
    	if(this.pageCount<=_t){
    		this.paintPart(1,this.pageCount,strArr);
    	}else{
			var className = 1==this.currentPage?"page-control-pagenum-selected":"page-control-pagenum";
			strArr.push("<div class='"+className+"'><a href='javascript:void(0);'>"+1+"</a></div>");
			
			if(this.currentPage>=_t){
				var t = (this.currentPage+size)>=this.pageCount?(this.pageCount-1):(this.currentPage+size);
	    		strArr.push("<div class='page-control-split'>...</div>");
	    		this.paintPart(this.currentPage - size,t,strArr);
	    		if((this.currentPage+size) < this.pageCount-1)
	    			strArr.push("<div class='page-control-split'>...</div>");
			}else{
				if(this.pageCount>=_t){
					var t = (this.currentPage+size)>=this.pageCount?(this.pageCount-1):(this.currentPage+size);
					this.paintPart(2,t,strArr);
		    		if((this.currentPage+size) < this.pageCount-1)
		    			strArr.push("<div class='page-control-split'>...</div>");
				}else{
					this.paintPart(2,this.pageCount-1,strArr);
				}
			}
	    	var _temp =  this.pageCount;
	    	var className = _temp==this.currentPage?"page-control-pagenum-selected":"page-control-pagenum";
			strArr.push("<div class='"+className+"'><a href='javascript:void(0);'>"+_temp+"</a></div>");
    	}
		
    	if(this.currentPage<this.pageCount)
    		strArr.push("<div id='divPageControlNext' class='page-control-forward'><a href='javascript:void(0);'>Next ></a></div>");
    	$(this.container).html(strArr.join(""));
    	this.bindEvents(this);
    },
    paintPart:function(start,end,arr){
		for(var c = start;c<=end;c++){
			var className = c==this.currentPage?"page-control-pagenum-selected":"page-control-pagenum";
			arr.push("<div class='"+className+"'><a href='javascript:void(0);'>"+c+"</a></div>");
		}
    },
    bindEvents:function(instance){//绑定事件
    	$("#divPageControlPrev").bind("click",function(){
    		instance.prevPage();
    	});
    	$("#divPageControlNext").bind("click",function(){
    		instance.nextPage();
    	});
    	$(".page-control-pagenum a").each(function(){
    		$(this).bind("click",function(){
	    		var pageNum = parseInt($(this).html());
	    		instance.goToPage(pageNum);
    		});
    		
    	});
    	

    }
}
分享到:
评论
1 楼 xxprcm 2013-01-31  
呵呵,沙发!

相关推荐

    ajax+jsp分页控件

    2. **编写Ajax请求**:使用JavaScript(例如jQuery库)编写Ajax请求,当用户操作分页控件时,向服务器发送请求。 3. **服务器处理**:在服务器端,根据接收到的页码和每页大小,执行相应的SQL查询,获取对应的数据。...

    ajax+jquery分页控件(asp.net)

    在ASP.NET开发中,使用Ajax和jQuery实现分页控件是一种常见的优化用户体验的方式。这种方式能够实现页面局部刷新,提高网页的响应速度,而无需每次请求都加载整个页面。以下是关于这个主题的一些关键知识点: 1. **...

    ASP.NET+AJAX分页

    `jquery.pagination.js` 是一个基于jQuery的分页插件,它提供了一种方便的方式来实现AJAX分页。jQuery是一个流行的JavaScript库,简化了DOM操作、事件处理和Ajax交互等任务,使得JavaScript编程更加简单。 `README....

    AspNetPager+JQuery+ajax分页

    本文将深入探讨如何结合AspNetPager分页控件、jQuery和AJAX技术来实现服务器端数据源的无刷新分页。 AspNetPager是由WebControlsWPC公司开发的一款强大的ASP.NET分页控件,它支持多种数据库和数据源,提供了丰富的...

    基于jquery实现简单的分页控件

    《基于jQuery实现简单的分页控件》 在网页开发中,分页功能是常见的数据展示方式,尤其是在数据量较大的情况下,它可以有效地组织信息,提高用户体验。这篇文章主要介绍如何使用jQuery来实现一个简单易用的分页控件...

    基于jquery制作采用Twitter分页样式的ajax分页控件源码.zip

    总结,这个基于jQuery的分页控件利用了jQuery的强大功能,实现了Twitter风格的Ajax分页。通过理解和运用这些知识点,开发者可以创建出更加优雅、高效的网页应用。同时,提供的源码是一个宝贵的教育资源,可供学习者...

    JQuery autocomplete Ajax分页控件

    在描述中提到的"JQuery autocomplete ajax分页",意味着这个实现增加了分页功能。分页是处理大量数据的常用方法,它可以将数据分成多个部分,每次只加载一部分到前端,这样可以减少一次性加载所有数据带来的性能问题...

    利用Linq + Jquery + Ajax 异步分页的实现

    在现代Web应用开发中,异步分页是一种常见的优化用户体验的技术,它允许用户在不刷新整个页面的...在实际项目中,还可以根据需求进行进一步的优化,如添加分页控件的样式、处理错误状态以及实现无刷新加载指示器等。

    struts2+hibernate(文件批量上传至数据库+Ajax分页显示)

    Ajax分页显示则利用JavaScript和jQuery库,使得页面无需刷新即可获取并展示数据。在后台,Struts2 Action会根据请求参数(如当前页码)查询数据库,并返回一个包含文件信息的集合。前端通过Ajax异步请求这个结果,...

    Asp.Net+Ajax+Jquery+Json无刷新分页

    1.无刷新分页控件,以Northwind数据库为示例, 2.支持多种分页样式选择,也可以自己修改源代码自定义 3.可以单击任意字段排序 4.MsSql数据库封装访问类,可以修改代码应用于其他数据库 5.继承自IHttpHandler接口...

    .net+ajax 分页实现

    // 假设`#pager`是我们的分页控件 $('#pager').on('click', 'a.page-link', function (e) { e.preventDefault(); // 阻止默认的链接行为 var pageNumber = $(this).data('page'); // 获取点击的页码 var ...

    一个JQuery +Ajax 封闭的一个GridView控件DataGrid

    【描述】:这个项目演示了如何结合jQuery和Ajax技术,创建一个具有动态加载、分页和排序功能的GridView控件。通过Ajax无刷新更新,提供流畅的用户体验,而jQuery则用于增强DOM操作和事件处理,使得用户交互更为便捷...

    一个JQuery +Ajax 封闭的一个GridView控件

    【标题】"一个JQuery +Ajax 封闭的一个GridView控件"揭示了这个项目的核心是使用JQuery和Ajax技术来实现一个类似于ASP.NET中的GridView的数据展示控件。GridView控件通常用于在网页上以表格形式展示数据,允许用户...

    JS+Jquery分页插件

    首先,`jquery-1.4.2.min.js`是jQuery库的压缩版本,它是JavaScript的一个强大的库,提供了丰富的DOM操作、事件处理、动画效果和Ajax交互等功能。jQuery简化了JavaScript的使用,使得开发者可以更便捷地实现各种复杂...

    .NET Ajax 分页控件

    .NET AJAX分页控件是针对.NET框架设计的,可以应用于WebForm和MVC两种开发模式。WebForm是.NET Framework中的经典模型,基于页面生命周期和服务器控件,而MVC(Model-View-Controller)则是一种更为现代的设计模式,...

    基于jquery的分页控件(客户端控件)

    总的来说,这个基于jQuery的分页控件提供了一种高效、便捷的方式来处理数据分页,通过AJAX技术实现了无刷新的页面切换,极大地提升了用户体验。结合适当的前端框架和后端API,可以轻松地将其整合到各种Web应用中。...

    wijmo+jquery+jqueryui+jqgrid 最新开发包以及demo

    1. **jQuery**: jQuery是一个高效、简洁且易用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。jQuery-1.7.2.js是这个版本的库文件,提供了许多功能,如选择器(用于查找DOM元素)、DOM操作...

    jquery+Vue分页器

    首先,jQuery是一个轻量级、功能强大的JavaScript库,常用于DOM操作、事件处理和AJAX交互。Vue.js则是一个渐进式的JavaScript框架,它强调数据驱动和组件化,使得构建用户界面更加容易。当两者结合时,可以充分利用...

Global site tag (gtag.js) - Google Analytics