bootstrapTable后端分頁(yè)后前端翻頁(yè)事件造成的顯示數(shù)據(jù)偶爾不對(duì)
程序邏輯是這樣的:
bootstrapTable列中有這樣一列敞葛,實(shí)現(xiàn)自動(dòng)排序
{ //序號(hào)自增實(shí)現(xiàn)方法
title: '序號(hào)',
field: 'xh',
formatter: function (value, row, index) {
//通過(guò)表的#id可以得到當(dāng)前分頁(yè)數(shù)量
var pageSize = $('#table-request').bootstrapTable('getOptions').pageSize;
//通過(guò)表的#id可以得到當(dāng)前頁(yè)碼
var pageNumber = $('#table-request').bootstrapTable('getOptions').pageNumber;
return pageSize * (pageNumber - 1) + index + 1;
}
},
分頁(yè)函數(shù)及方法:
onPageChange: function (number, size) {
seoPageChange(number, size);
}
function seoPageChange(number, size) {
$('#table-request').bootstrapTable('removeAll');//非常重要
//請(qǐng)求數(shù)據(jù)
$.ajax({
url: 'ChartConfig/GetConfigSeoData',
type: "post",
data: temp,
dataType: "json",
success: function (result, status) {
$('#table-request').bootstrapTable('load', result );
}
});
}
后臺(tái)對(duì)數(shù)據(jù)進(jìn)行了篩選排序和跳頁(yè),翻頁(yè)的時(shí)候壶唤,經(jīng)常會(huì)出現(xiàn)展示初始數(shù)據(jù)的情況,ajax請(qǐng)求的數(shù)據(jù)好像沒(méi)有加載一樣脓钾。
分析了一下可能時(shí)這樣的:
bootstrapTable再翻頁(yè)時(shí)會(huì)先觸發(fā)翻頁(yè)函數(shù)onPageChange宾濒,同時(shí)也會(huì)觸發(fā)本身向后臺(tái)請(qǐng)求帕翻。所以相當(dāng)于請(qǐng)求了兩次宠进,加載了兩次晕拆。若上面的seoPageChange函數(shù)ajax請(qǐng)求沒(méi)有數(shù)據(jù),就好像做了一次重新加載材蹬。添加
$('#table-request').bootstrapTable('removeAll');//非常重要
翻頁(yè)之前將數(shù)據(jù)清空实幕,這樣解決了翻頁(yè)時(shí)數(shù)據(jù)對(duì)不上的問(wèn)題。
但是最好的解決方式還是再翻頁(yè)時(shí)將參數(shù)同bootstrapTable本身的后臺(tái)方法一起傳到后臺(tái)堤器,onPageChange方式比較多余昆庇。
$('#table-request').bootstrapTable({
//其他參數(shù)略去
queryParams: oTableInit.queryParams,//傳遞參數(shù)(*)
})
//得到查詢的參數(shù),例如搜索排序等功能參數(shù)可以傳到后臺(tái)
oTableInit.queryParams = function (params) {
var temp = {//這里傳入需要的參數(shù)
limit: params.limit,//頁(yè)面大小
offset: params.offset,
};
return temp;
};