昨天項目中涉及到了前端表格分頁問題。數據一共有1萬多條,所以選擇了后端分頁。
之前用的都是前端分頁,第一次使用后端分頁。網上也找到了一些例子,最后做出來了。
這里用的是bootstrap-table插件。沒有用過的可以點以下鏈接去看看
bootstrap-table中文文檔:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/
bootstrap-table各種例子demo:https://github.com/wenzhixin/bootstrap-table-examples
好了,廢話太多
html記得引用插件,然后加入一個table就可以測試了
js代碼
$('#YourTable').bootstrapTable({
method: 'get',
contentType: "application/x-www-form-urlencoded",//一種編碼。好像在post請求的時候需要用到。這里用的get請求,注釋掉這句話也能拿到數據
url:"your-server-url",//要請求數據的文件路徑
dataField: "data",//這是返回的json數組的key.默認好像是"rows".這里只有前后端約定好就行
pageNumber: 1, //初始化加載第一頁,默認第一頁
pagination:true,//是否分頁
queryParams:queryParams,//請求服務器時所傳的參數
sidePagination:'server',//指定服務器端分頁
pageSize:10,//單頁記錄數
pageList:[10,20,30,40],//分頁步進值
responseHandler:responseHandler,//請求數據成功后,渲染表格前的方法
colums :[{//列參數
field : "id",
title : "id",
},{
field : "name",
title : "名稱",
},{
field : "price",
title : "價格"
}]
})
//請求服務數據時所傳參數
function queryParams(params){
return {
pageSize : params.limit, //每一頁的數據行數,默認是上面設置的10(pageSize)
pageIndex : params.offset/params.limit+1, //當前頁面,默認是上面設置的1(pageNumber)
param : "Your Param" //這里是其他的參數,根據自己的需求定義,可以是多個
}
}
//請求成功方法
function responseHandler(result){
var errcode = result.errcode;//在此做了錯誤代碼的判斷
if(errcode != 0){
alert("錯誤代碼" + errcode);
return;
}
//如果沒有錯誤則返回數據,渲染表格
return {
total : result.dataLength, //總頁數,前面的key必須為"total"
data : result.rowDatas //行數據,前面的key要與之前設置的dataField的值一致.
};
};
//刷新表格數據,點擊你的按鈕調用這個方法就可以刷新
function refresh() {
$('#YourTable').bootstrapTable('refresh', {url: "your-server-url"});
}
后端返回的數據結構
要用后端分頁,就必須傳頁碼和每一頁行數給后端。而且后端的返回必須要有總數和當前頁數據。
如果跟后端約定好,返回的數據格式第一層包含“rows”(行數據)和“total”(總數)。responseHandler可以不用寫。
大家只要理解原理,就能按照自己的需求或者限制去做出自己想要的效果了
最后結果如下

(有什么疑問的可以一起交流)
