jQuery.DataTables实现简单的服务端分页.

效果图如下:

 JS代码如下:

// 自定义 dataTable语言显示
var dataTableLanguage = {
	"sLengthMenu": "每页显示 _MENU_ 条记录",
	"sZeroRecords": "抱歉, 没有找到",
	"sInfoEmpty": "没有数据",
	"sInfo": "显示 _START_ 至 _END_ 条   共 _TOTAL_ 条",
	"sInfoFiltered": "(从 _MAX_ 条数据中检索)",
	"oPaginate": {
	    "sFirst": "首页",
	    "sPrevious": "上一页",
	    "sNext": "下一页",
	    "sLast": "尾页"
	 },
	 "sZeroRecords": "没有检索到数据",
};

// 渲染表格			
var tableObj = $("#table-sort").dataTable({			
    "searching": false, // 是否开启默认的查询条件输入框			
    "serverSide": true, // 服务端分页			
    "fnPageChange":"next", // 换页方法,可以跳转到指定页。可选参数有"first", "previous",   "next" , "last",或者是一个整数,0是第一页			
    "bProcessing": true, // 当表格在处理的时候(比如排序操作)是否显示“处理中...”,默认false			
    "bPaginate": true, // 是否允许终端用户从一个选择列表中选择分页的页数			
    "aLengthMenu":[10,20,30,40,50,100], //每页显示的记录数,供用户选择			
    "bLengthChange": true, // 是否显示每页大小的下拉框			
    "bFilter": true, // 过滤功能			
    "bSort": true, // 排序功能			
    "aaSorting": [[0,"asc"]],// 设置初始化时默认一列来排序			
    "sPaginationType":"full_numbers", // 分页组件的样式,具体样式参考 https://www.datatables.net/release-datatables/examples/basic_init/alt_pagination.html			
    "ajax":{			
    	url:"../baseData/listGroupNumber.do",// 请求的URL		
    	type:"post",		
    	data:function(data){ // 提交到后台的参数,内容很多,如要获取所有,请直接return data就行了,具体请遍历data对象或用浏览器F12网络,参数中查看		
      	    var param = {};		
     	    var columnIndex = data["order"][0]["column"]; // 获取鼠标点击列名的下标		
    	    param.start = data["start"]; // 数据的开始位置		
    	    param.length = data["length"]; // 每页显示的数量		
    	    param.order = data["order"][0]["dir"]; // 排序规则 DESC或ASC		
    	    param.orderField = data["columns"][columnIndex]["data"]; // 根据下标获取排序列名的名称		
    	    param.search = data["search"]["value"]; // 搜索框的文本内容,searching如果不为true,则就是默认空串			
    	    return param;		
    	}		
    },			
    "fnDrawCallback": function (oSettings) {			
    	var json=jQuery.parseJSON(oSettings.jqXHR.responseText);//获取后台方式 直接可以拿到json 之后进行处理		
    	//console.log(json);//此处json就是返回的数据		
    	$("#showspan").text(json.iTotalRecords);		
    			
    },			
    "oLanguage": dataTableLanguage,// 界面显示文字,默认是英文			
    "aoColumns": [
              // uid后台返回的JSON对象的属性名,sDefaultContent当后台数据为null时,显示的默认值,bVisible前端是否显示这个字段,默认true,bSortable设置此列不参与排序操作			
	      {"data": "uid","sDefaultContent":"","bVisible":true,"bSortable":false,		
	    	  // 自定义渲染结果	
	    	  "render":function (data, type, full, meta) {	
	    		  return "<input type='checkbox' value='"+data+"' />";
	           }		
	      },		
	      {"data":"legalPerson","sDefaultContent":""},		
	      {"data":"businessCluster","sDefaultContent":""},		
	      {"data":"costCode","sDefaultContent":""},		
	      {"data":"number","sDefaultContent":""},		
	      {"data":"proportion","sDefaultContent":""}		
    ]			
});		

// 刷新表格,重新加载数据
function refresh() {
    tableObj.fnDraw(true);
}	

  HTML代码如下:

		<table id="table-sort">
			<thead>
				<tr>
 				    <th><input type="checkbox" /></th>
			            <th>法人</th>
				    <th>事業群</th>
 			            <th>費用代碼</th>
			            <th>人數</th>
			            <th>人數佔比</th>
				</tr>
			</thead>
 			<tbody>
			</tbody> 
		</table>

Java Controller返回如下

	/**
	 * @param start 分頁的開始位置
	 * @param length 每頁顯示的數量
	 * @param order 排序方式
	 * @param orderField 排序字段
	 * @param searchText 搜索文本
	 **/
	@RequestMapping(value="/listResidenceNumber.do")
	@ResponseBody
	public Map<String,Object> listResidenceNumber(Integer start,Integer length,
			String order,String orderField,String search) {
		Map<String,Object> result = new HashMap<String,Object>();
		result.put("iTotalDisplayRecords", service.getListResidenceCount(searchText));
		result.put("iTotalRecords", result.get("iTotalDisplayRecords"));	
		result.put("data", service.listResidenceNumber(start, length, order, orderField, search));
		return result;
	}

后台分页的JSON格式返回如下:

{
    "iTotalRecords":52,
    "data":[{"businessCluster":"xxxx","costCode":"xxxx","legalPerson":"xxxxx有限公司","nonCompany":0.0,"outOfNum":0.0,"proportion":1.062E-4,"residenceCode":"xxxx","residenceNum":186.0,"total":186.0,"uid":"AD5095F9D12748308C532BAEE6FBF6B2"}],
    "iTotalDisplayRecords":52
}

注意事项:

       如果不设置iTotalDisplayRecords与iTotalRecords会导致下一页功能失效,详情请参阅jquery.dataTable源码_fnAjaxUpdateDraw方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值