问题描述
我有一个BootstrapTable,所有的列出操作都在该表格展示。我另外写了搜索引擎,那么,当用户查询后,表格的内容应更换为查询结果,翻页自然也是翻查询结果的页,结果实际翻页翻的是未查询时的结果页面,总页数也是未查询时的页数,非查询结果的页数。
解决方案
其实很简单,即先销毁该表格,再重新初始化即可。这里贴一下:
function reInitTableList(url, options) {
...
$('#tablelist').bootstrapTable({
url: url,
method: 'post', //请求方式(*)
...
pagination: true, //是否显示分页(*)
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
pageNumber: 1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*)
pageList: [10, 20, 30, 50, 100], //可供选择的每页的行数(*)
rowStyle: options.rowStyle || function (row, index){return {};},
columns: options.columns
});
...
}
reInitTableList()里的内容与最开始初始化BootstrapTable是完全一致的。不同的是,这次需要传递一个新的url进去,这个url就是我的查询地址。用法如下所示:
$("#btn_get_proc").click(function () {
var $this = $(this);
var userId = $this.attr("data-id");
// 原本使用load,导致表格沿用上一次的分页
// load只会更新表格当前页面的内容,翻页那里是不会更新的
/*$.ajax({
type: "post",
url: options.getProcUrl,
data: {userid:userId},
success: function (dat) {
// 这里重新装填tablelist的数据
$("#tablelist").bootstrapTable('load', dat);
},
error: $.tool.ajaxError
});*/
$("#tablelist").bootstrapTable('destroy');
reInitTableList(options.getProcUrl, options);
});