第一次记录
Jquery的DataTable插件是一款非常方便的插件,
由于自带的分页功能是一次性查出所有数据在实际中不是很好,所以需要后台分页减轻渲染压力。
这里只记录如何在后台分页,所以基本怎么引用DataTable不做说明。怎么使用请百度一下哦!
先看前台JS:1.最简单的DataTabel渲染Jq代码,这种是前台插件自带分页的写法,就是一次性查出所以内容
$('#f_table').DataTable({
"data":getData(),//这里就是你后台查询返回数据的值,注意这里使用ajax需要async:false,非异步,
"columns": [
{ data: 'cal_year' },//后台返回的字段
{ data: 'cal_month' }
]
});
再来就是后台分页:
$('#f_table').DataTable({
"paging": true, //分页
"bServerSide": true,
"sAjaxSource": url,// 后台请求地址
"sAjaxDataProp": "data",
"fnServerData": loadData, // 获取数据的处理函数(下面的loadData方法)
"columns": [
{ data: 'cal_year' },
{ data: 'cal_month' }
]
});
function loadData(sSource, aoData, fnCallback) {
var map = getMap(aoData);//就是解析页面的一下参数
var pageInfo = {};
pageInfo.pageSize = map.iDisplayLength;//每页显示多少条数据大小
pageInfo.pageNum = map.iDisplayStart % map.iDisplayLength == 0 ? map.iDisplayStart / map.iDisplayLength + 1 : map.iDisplayStart / map.iDisplayLength; //页码
$.ajax({
url: sSource,//这个就是请求地址对应sAjaxSource
data: {
"pageNO": pageInfo.pageNum, //这个就是传给后台的分页参数值 ,至于后台使用什么参数名随之变就可以
"records":pageInfo.pageSize //分页大小
},//这个是把datatable的一些基本数据传给后台,比如起始位置,每页显示的行数
type: 'post',
dataType: 'json',
async: false,
success: function (result) {
var obj = {};
obj['data'] = result.data.queryList.data; //后台返回的数据
obj.iTotalRecords = result.data.queryList.recordsTotal;
obj.iTotalDisplayRecords = result.data.queryList.recordsTotal;
fnCallback(obj);//把返回的数据传给这个方法就可以了,datatable会自动绑定数据的
},
error: function (msg) {
alert(msg);
}
});
}
function getMap(aData) {
var map = {};
for (var i = 0; i < aData.length; i++) {
var item = aData[i];
if (!map[item.name]) {
map[item.name] = item.value;
}
}
return map;
}