使用bootstrap-table做分頁時候搭伤,我們可能會用到limit和pageNumber兩個參數(shù)傳遞給后臺型将。分頁處理的js如下:
$(function() {
$('#dataGrid').bootstrapTable(
{
url : 'article/selectListByType',
method : 'post',
toolbar : '#toolbar',
contentType : 'application/x-www-form-urlencoded',
striped : true,
showColumns : true,
showRefresh : true,
pagination : true,
pageSize : 10,
sortName : 'id',
sidePagination : 'server',
queryParamsType: 'limit',
queryParams: queryParams,
columns : [
{
checkbox : true
},
{field : 'id',title : '新聞ID',align : 'center',align : 'left',editor : "text"},
{field : 'lastModTime',title : '發(fā)布時間'}
]
});
});
這里設(shè)置sidePagination : 'server', 和queryParamsType: 'limit',
通過queryParams: queryParams,傳入?yún)?shù)帝洪,queryParams代碼如下:
//查詢參數(shù)
function queryParams(params) {
return {
limit: params.limit,
offset: params.offset,
nextPage: params.pageNumber,
typeId : $('#typeId').val(),
searchName : $('#searchName').val(),
searchUrl : $('#searchUrl').val(),
};
}
這段代碼中的params.limit是成功取到值的程剥,但是params.pageNumber卻是無法取到值荣挨,怎么回事呢硝岗?
bootstrap-table官網(wǎng)(http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/)中有這么一個說法飞傀,大概是queryParamsType設(shè)置為limit時候是沒有pageNumber返回的皇型。
解決辦法:
1、通過params.offset可以取得所要查詢也的起始數(shù)據(jù)砸烦,在結(jié)合每頁數(shù)據(jù)limit弃鸦,已經(jīng)足夠?qū)崿F(xiàn)數(shù)據(jù)庫分頁查詢了。
2幢痘、這種方法有點小麻煩唬格,就是要修改bootstrap-table.min.js的源碼,首先在bootstrap-table.min.js中搜索 "limit"===this.options.queryParamsType&& (完全復(fù)制過去搜索颜说,當然因為版本的原因购岗,一些版本代碼細微處可能不太一樣,但是肯定跟limit有關(guān)门粪,仔細找一下應(yīng)該還是可以找到的)找到下面的代碼片段:
"limit"===this.options.queryParamsType&&(i={search:i.searchText,sort:i.sortName,order:i.sortOrder},this.options.pagination&&(i.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1),i.limit=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize))
由于源碼文件沒有格式喊积,所以就是一行,比較難看玄妈,修改時候小心一點就好了乾吻,可以看到在this.options.pagination&&后面的括號中有i.offset=...,i.limit=...拟蜻,的代碼绎签,在i.limit=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize后面加上, i.pageNumber=this.options.pageNumber(記得一定要英文逗號分隔)
最終修改后結(jié)果如下:
"limit"===this.options.queryParamsType&&(i={search:i.searchText,sort:i.sortName,order:i.sortOrder},this.options.pagination&&(i.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1),i.limit=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize, i.pageNumber=this.options.pageNumber))
這樣子就可以通過params.pageNumber取到頁碼了。