简单的html数据分页控件封装

好用的分页控件有好多,但似乎自己实现和封装一个比较方便,以后修改也方便。

大概的想法是创建一个page.js文件,把所需的函数封装到window的page对象中。需要使用这个控件的时候,引用page.js文件,然后调用它里面的方法来初始化、更新和显示控件。控件可以根据返回数据的结果判断要不要显示总页数和“末页”按钮。


效果如下:

有总页数的情况:


没总页数的情况:



具体代码:

page.js文件:

/**
 * 分页控件:封装了翻页所需的参数、操作函数
 * 分页控件容器用“page”类标识,比如:<div class="pageDiv page"></div>
 * @author: XuJijun 
 */
(function(_win) {
	"use strict";
	
	//请求参数,保存了当前页数
	var pParam = {pageNo: 1, pageSize: 10, params: null, totalPage: 999};
	
	//指向搜索函数,用于翻页的时候回调搜索函数
	var search;
	
	var _p = {
		// 初始化调用
		init : function(obj, args) {
			return (function() {
				//console.log(obj);
				//console.log(args);
				_p.fillHtml(obj, args);
				_p.bindEvent(obj, args);
			})();
		},
        

		// 填充html
		fillHtml : function(obj, args) {
			var html = "<a href='javascript:;' id='firstPage'>首页</a> "
				+ "<a href='javascript:;' id='previousPage'>上一页</a> "
				+ "第<input type='number' id='pageNo' min='1' max='999' value='1'/>页<span id='totalPage'>(共<span id='pageCount'>999</span>页)</span>"
				+ "<a href='javascript:;' id='nextPage'>下一页</a> "
				+ "<a href='javascript:;' id='lastPage'>末页</a>";

			$(".page").html(html);
		},
        
        //绑定事件
        bindEvent: function (obj, args) {
        	$("#firstPage").on("click", function() {
				pParam.pageNo = 1;
				search();
			});
        	
        	$("#lastPage").on("click", function(){
        		pParam.pageNo = pParam.totalPage;
        		search();
        	});

        	$("#nextPage").on("click", function() {
				if (pParam.pageNo == pParam.totalPage) {
					alert("已经是最后一页了!");
					return;
				}
				pParam.pageNo++;
				search();
			});

        	$("#previousPage").on("click", function() {
				if (pParam.pageNo == 1) {
					alert("已经是第一页了!");
					return;
				}
				pParam.pageNo--;
				search();
			});
        	

        	// 页数控件失去焦点:
			$("#pageNo").blur(function() {
				var pn = Number($("#pageNo").val());
				if (pn < 1) {
					pn = 1;
					$("#pageNo").val(pn);
				} else if (pn > pParam.totalPage) {
					pn = pParam.totalPage;
					$("#pageNo").val(pn);
				}

				pParam.pageNo = pn;
				search();
			});

			// 页数回车:
			$("#pageNo").keyup(function(event) {
				if (event.which != 13) {
					return;
				}

				var pn = Number($("#pageNo").val());
				if (pn < 1) {
					pn = 1;
					$("#pageNo").val(pn);
				} else if (pn > pParam.totalPage) {
					pn = pParam.totalPage;
					$("#pageNo").val(pn);
				}

				pParam.pageNo = pn;
				search();
			});
        }
	};

	
	_win["page"] = {
		/**
		 * 初始化,创建分页控件
		 * @param options:每页记录数、搜索函数:{pageSize: 30, searchFunction: search}
		 */
		createPage: function(options){
			if(options.pageSize!=undefined){
				pParam.pageSize = options.pageSize;
			}
			search = options.searchFunction;
	        _p.init(this, pParam);
		},
		
		/**
		 * 把pageNo, pageSize和用户填写的查询条件build进pageParam中。
		 * 开始ajax查询数据前调用。
		 */
		buildParams: function(params){
			pParam.params = params;
			return pParam;
		},
		
		/**
		 * 重设pageNo为1。
		 * 重新开始查询的时候调用。
		 */
		resetPageNo: function() {
			pParam.pageNo = 1;
		},
		
		/**
		 * 更新分页控件中的信息
		 * @param data
		 */
		updatePage: function(data){
			if(data.totalPage==0){
				$("#totalPage").hide();
				$("#lastPage").hide();
			}else{
				pParam.totalPage = data.totalPage;
				$("#pageNo").attr("max", data.totalPage);
				$("#pageCount").html(data.totalPage);
			}
			$("#pageNo").val(data.pageNumber);
		},
	};
	
})(window);


使用方法:

简单几步:

1、html中放置一个class为“page”的容器,以容纳翻页按钮:

<div class="pageDiv page" style='display:block; text-align:right;'></div>

还有开始查找按钮:

<button type="button" οnclick="goSearch()">开始查找</button>

2、调用page.createPage()函数初始化,告诉page:每页记录数、用于搜索函数

	$(function() {
		page.createPage({pageSize: 30, searchFunction: search});
	});

3、用于搜索的函数中,调用page.buildParams()函数保存当前的PageNo

	function search() {
		//把pageNo, pageSize和用户填写的查询条件build进pageParam中
		var pageParam = page.buildParams($("form").serializeObject());
		
		sys.ajax("/servlet/userOpLog/search", {
			params : pageParam,
			callback : pageQueryCallback
		});
	}

4、开始查找的函数中,调用page.resetPageNo()重设pageNo为1

	//开始查找
	function goSearch() {
		page.resetPageNo();
		search();
	}

5、ajax的callback函数中,调用page.updatePage()来更新分页控件的内容

	function pageQueryCallback(result) {
		var data = result.data;
		
		page.updatePage(data);

		var html = template('opLogListTpl', data);
		$("#result").html(html);
	}





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataGridView分页控件封装是为了实现对大量数据分页显示和管理。当数据量较大时,一次性加载所有数据到DataGridView中会占用大量内存,影响程序的运行速度和用户体验。通过分页控件封装,可以将数据进行分页加载,提高程序的运行效率。 封装一个DataGridView分页控件,需要考虑以下几个方面: 1. 数据源管理:封装控件需要支持设置数据源,可以从数据库、列表等来源获取数据,并进行分页处理。同时,还需要支持数据的添加、删除、修改等操作。 2. 分页显示:封装控件需要实现对数据分页显示,每页显示指定数量的数据,并提供上一页、下一页、首页、末页等操作按钮,方便用户切换页数。 3. 数据排序:封装控件应该支持对数据进行排序,用户可以根据某一列的值进行升序或降序排列。 4. 数据筛选:封装控件应该支持对数据进行筛选,用户可以根据某一列的值进行筛选显示符合条件的数据。 5. 显示页面信息:封装控件需要在界面上显示当前页数、总页数、总记录数等信息,让用户清楚了解当前显示的数据范围。 6. 事件处理:封装控件需要提供相应的事件,让用户可以对操作进行自定义处理,如点击某一行数据触发事件等。 通过以上功能的封装,可以方便开发人员在各种项目中使用DataGridView分页控件,实现数据分页显示和管理,提高程序的可用性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值