基于 BootStrap 的 ajax 分页控件

1 篇文章 0 订阅
1 篇文章 0 订阅

1.引入js文件和css文件

/*
 * 基于bootstrap的分页控件
 * 使用前请先引入:
 * 1.<link rel="stylesheet" href="bootstrap-3.3.0/dist/css/bootstrap.css" />
 * 2.<script type="text/javascript" src="jquery/jquery-1.11.2.min.js"></script>
 * 
 * 
 url		请求的url(目前没有,可用于拓展ajax的部分)
 pageSize	每页显示的数据量
 pageNo		当前页的序号
 totalSize	记录的总条数
 pageStyle	分页样式,支持bootstrap分页样式
 pageForm	查询表单
 pageDiv	展示分页控件的容器
 fn			点击分页按钮时触发的函数,类似于回调函数
 */

function Page(){
	this.url="";
	this.pageSize=10;
	this.pageNo=1;
	this.totalSize="";
	this.pageStyle="pagination";
	this.pageForm="";
	this.pageDiv="";
	this.fn="";
	this.setUrl=function(url){
		this.url=url;
	}
	this.getUrl=function(){
		return this.url;
	}
	this.setPageSize=function(pageSize){
		this.pageSize=Number(pageSize);
	}
	this.getPageSize=function(){
		return this.pageSize;
	}
	this.setPageNo=function(pageNo){
		this.pageNo=Number(pageNo);
	}
	this.getPageNo=function(){
		return this.pageNo;
	}
	this.setTotalSize=function(totalSize){
		this.totalSize=Number(totalSize);
	}
	this.getTotalSize=function(){
		return this.totalSize;
	}
	this.setPageStyle=function(pageStyle){
		this.pageStyle=pageStyle;
	}
	this.getPageStyle=function(){
		return this.pageStyle;
	}
	this.setPageForm=function(pageForm){
		this.pageForm=pageForm;
	}
	this.getPageForm=function(){
		return this.pageForm;
	}
	this.setPageDiv=function(pageDiv){
		this.pageDiv=pageDiv;
	}
	this.getPageDiv=function(){
		return this.pageDiv;
	}
	this.setFn=function(fn){
		this.fn=fn;
	}
	this.getFn=function(){
		return this.fn;
	}
	
	
	this.doStartPage=function(){
		//判断是否是查询分页还是直接分页
		var html=formGeneratePage(this);
		console.log(html);
		$("#"+this.pageDiv+"").empty();
		$("#"+this.pageDiv+"").append(html);
	}
	
	/**
	 * 封装的一个小工具,获取表单所有样式为 form-data 的 input
	 */
	this.getFormData=function(pageFrom){
		this.pageForm=pageFrom;
		var data="";
		$("#"+this.getPageForm()+" input.form-data").each(function(count){
			var name=$(this).attr("name");
			var value=$(this).attr("value");
			if(count!=0){
				data=data+"&";
			}
			data=data+name+"="+value;
		});
		return data;
	}
	
}


/**
 * 支持表单查询的分页
 */
function formGeneratePage(bean){
	//计算总页数
	var pageCount=parseInt((bean.getTotalSize()+bean.getPageSize()-1)/bean.getPageSize());
	
	var html="";
	html=html+"<style type='text/css'>";
	html=html+".pointer{cursor: pointer; }";
	html=html+"</style>";
	html=html+"<ul class='" + bean.getPageStyle() + "'>";
	
	if(bean.getTotalSize()==0){//没有记录
		html=html+"<strong>没有记录</strong>";
	}else{// 有记录
		// 1.不需要分页,记录条数小于pageSize
		// 2.当前页是第一页,不需要显示上一页
		// 3.最后一页,不需要显示下一页
		if(bean.getPageNo()==1){
			html=html+"<li class='disabled'><a class='pointer'  οnclick='return false'>上一页</a></li>";
		}else{
			html=html+"<li><a class='pointer' οnclick='javascript:"+bean.getFn()+"(\""+(bean.getPageNo() - 1)+"\");'>";
			html=html+"上一页</a></li>";
		}
		
		//如果页数过多  
		var start=1;
		if(bean.getPageNo()>4){
			start=bean.getPageNo()-1;
			html=html+"<li><a class='pointer' οnclick='javascript:"+bean.getFn()+"(\"1\");'>";
			html=html+"1</a></li>";
			html=html+"<li><a class='pointer' οnclick='javascript:"+bean.getFn()+"(\"2\");'>";
			html=html+"2</a></li>";
			html=html+"<li><a class='pointer'  οnclick='return false'>…</a></li>";
		}
		//显示当前页相邻的页 
		var end=bean.getPageNo()+1;
		if(end>pageCount){
			end=pageCount;
		}
		for(var i=start;i<=end;i++){
			if(bean.getPageNo()==i){
				html=html+"<li class='active'><a class='pointer'  οnclick='return false'>" + bean.getPageNo()+ "</a></li></li>";
			}else{
				html=html+"<li><a class='pointer' οnclick='javascript:"+bean.getFn()+"(\""+i+"\");'>";
				html=html+"" + i + "</a></li>";
			}
		}
		
		//后面的页数过多 html=html+a;
		if(end<pageCount-2){
			html=html+"<li><a class='pointer'  οnclick='return false'>…</a></li>";
		}
		
		if(end<pageCount-1){
			html=html+"<li><a class='pointer' οnclick='javascript:"+bean.getFn()+"(\""+(pageCount - 1)+"\");'>";
			html=html+(pageCount - 1) + "</a></li>";
		}
		if(end<pageCount){
			html=html+"<li><a class='pointer' οnclick='javascript:"+bean.getFn()+"(\""+pageCount+"\");'>";
			html=html+pageCount + "</a></li>";
		}
		if(bean.getPageNo()==pageCount){
			html=html+"<li class='disabled'><a class='pointer' οnclick='return false'>下一页</a></li>";
		}else{
			html=html+"<li><a class='pointer' οnclick='javascript:"+bean.getFn()+"(\""+(bean.getPageNo() + 1)+"\");'>";
			html=html+"下一页</a></li>";
		}
	}
	html=html+"</ul>";
	return html;
}

2.测试例子

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="bootstrap-3.3.0/dist/css/bootstrap.css" />
		<style type="text/css"></style>
	</head>
	<body>
		<!-- 用于展示分页控件的容器 -->
		<div id="pageDiv"></div>
		<div class="clearfix"></div>
		
		<form id="showData" class="navbar-form navbar-left" role="search">
			<div class="form-group">
				<input type="text" name="username" value="Neo" class="form-control form-data" />
			</div>
			<div class="form-group">
				<input type="password" name="password" value="admin" class="form-control form-data" />
			</div>
			<button type="button" class="btn btn-default" οnclick="getFormData()">Submit</button>
		</form>

	</body>
	<script type="text/javascript" src="jquery/jquery-1.11.2.min.js"></script>
	<script type="text/javascript" src="js/paging.js"></script>
	<script type="text/javascript">
		function showPage(pageNo) {
			var totalSize = 100;
			if(typeof(pageNo) == "undefined") {
				pageNo = 1;
			}
			var bean = new Page();
			bean.setPageNo(pageNo);//设置当前页
			bean.setTotalSize(totalSize);//设置总页数
			bean.setPageDiv("pageDiv");//设置展示分页控件的容器
			bean.setFn("showPage");//点击按钮的回调函数
			bean.doStartPage();
		}
		showPage(1)

		function getFormData() {
			var bean = new Page();
			var data = bean.getFormData("showData")
			alert(data);
		}
	</script>

</html>


 

QQ:784277265


                
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bootstrap Table是一款基于Bootstrap框架的强大的表格插件,它可以快速搭建精美的数据表格,并支持通过Ajax进行分页加载数据。 使用Bootstrap Table进行Ajax分页,需要在表格初始化时设置相关参数和方法。首先,在HTML中创建一个容器来存放表格,如下所示: ```html <div id="tableContainer"></div> ``` 然后,在JavaScript中进行表格的初始化,同时设置Ajax分页的相关参数和方法,如下所示: ```javascript $(function() { $('#tableContainer').bootstrapTable({ method: 'get', // 通过GET方式获取数据 url: 'your_ajax_url', // 设置读取数据的URL地址 pagination: true, // 开启分页 sidePagination: 'server', // 分页方式为服务器端分页 queryParamsType: '', // 参数类型为默认的'limit'和'offset' queryParams: function(params) { // 自定义请求参数 params.customParam1 = 'value1'; params.customParam2 = 'value2'; return params; }, responseHandler: function(res) { // 自定义数据处理函数 return res.data; // 返回服务器端返回的数据 }, onLoadSuccess: function(data) { // 加载成功后的回调函数 // TODO: 处理加载成功后的操作 }, onLoadError: function(status) { // 加载失败后的回调函数 // TODO: 处理加载失败后的操作 } }); }); ``` 以上代码中,`method`参数设置为'get'表示使用GET方式获取数据,`url`参数设置为ajax请求的URL地址,`pagination`参数设置为true表示开启分页,`sidePagination`参数设置为'server'表示服务器端分页,`queryParamsType`参数设置为空表示请求参数为默认的'limit'和'offset'。 `queryParams`参数可以自定义请求参数,其中`params`是向服务器端发送的参数对象,可以添加自定义的参数。 `responseHandler`参数可用于自定义数据处理函数,将服务器端返回的数据进行处理后返回给Bootstrap Table。 `onLoadSuccess`参数和`onLoadError`参数分别是加载成功和失败后的回调函数,可以在加载完成后进行相应的操作。 通过以上设置,就可以实现使用Bootstrap Table进行Ajax分页加载数据的功能。当用户进行分页操作时,插件会自动发送Ajax请求获取对应页码的数据并更新到表格中,从而实现了Ajax分页的效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值