bootstrap-table怎么分页?两种方式介绍

分页的重要性

在分页这个话题之前,我们不得不提一下网络应用的性能问题。在网络应用中,提高性能的一个常用方式就是“懒加载”,即按需加载。如果我们能将数据分成多页,每页只加载用户需要的那一部分,那么页面的加载速度就会更快。除此之外,分页还能改善页面的展现效果,让用户更方便地查看和操作数据。

接下来,我们将介绍Bootstrap Table中两种常见的分页方式。

基本分页

基本分页是Bootstrap Table中最简单的分页方式,它不需要引入任何额外的插件。基本分页具有以下几个特点:

只有一页的数据时,分页组件不会显示;

数据量大于一页时,每页默认显示10条数据;

分页组件的样式和布局都是Bootstrap风格;

如果需要自定义分页组件样式和布局,需要手动编写CSS。

使用方法

Bootstrap Table默认开启了基本分页模式,所以我们只需要按照正常的使用方式即可。在HTML中添加一个空的table标签,并使用jQuery选择器将其转换为Bootstrap Table。我们还需要定义一个数据源,用于加载数据。

 <table id="myTable"></table>

var data = [

{

"name": "张三",

"age": 18,

"gender": "男",

"hometown": "北京市"

},

{

"name": "李四",

"age": 20,

"gender": "女",

"hometown": "上海市"

}

];

$("#myTable").bootstrapTable({

data: data

});

加载数据完成后,我们就可以看到一个带有分页组件的表格了。此时,每页默认显示10条数据,如果数据量少于10条,则不会显示分页。

自定义分页参数

Bootstrap Table提供了一些选项,可以控制分页组件的显示和行为。在上面的例子中,我们只是最简单地使用了默认设置,实际上我们可以通过以下方式自定义分页参数:

pageSize: 每页显示的数据量,默认值为10;

pageList: 可以选择的每页数据量数组,默认值为[10, 25, 50, 100];

pageNumber: 默认显示第几页的数据,从1开始计数;

pagination: 是否显示分页组件,默认值为true;

onlyInfoPagination: 是否只显示分页信息(如“第1页,共1页”,不显示具体分页组件),默认值为false;

paginationLoop: 是否启用无限循环分页模式,默认值为true;

totalRows: 总数据量,如果数据源是异步加载的,则需要手动设置这个值。

下面是一个使用自定义分页选项的例子:

 <table id="myTable"></table>

var data = [

{

"name": "张三",

"age": 18,

"gender": "男",

"hometown": "北京市"

},

{

"name": "李四",

"age": 20,

"gender": "女",

"hometown": "上海市"

}

];

$("#myTable").bootstrapTable({

data: data,

pagination: true,

pageSize: 5,

pageList: [5, 10, 15],

pageNumber: 2,

onlyInfoPagination: false,

paginationLoop: false,

totalRows: 10

});

在上面的例子中,我们将每页显示的数据量改为了5条,同时定义了可选的每页数据量数组。默认显示第2页的数据,并开启分页组件。如果数据量少于5条,则不会显示分页。我们还关闭了无限循环分页模式,开启了分页信息显示,并手动设置了总数据量为10。这些参数实现起来比较简单,而且可以根据实际需求进行调整。

高级分页

在某些情况下,基本分页已经无法满足我们的需求了。例如,我们需要根据用户的选择动态加载数据,或者需要根据服务器返回的信息确定分页组件的参数。这时,我们可以使用Bootstrap Table支持的高级分页方式,即通过ajax加载数据并使用服务端分页插件来实现。

高级分页具有以下几个特点:

数据源可以通过ajax请求加载;

分页和排序等操作都由服务端控制;

可以使用jQuery插件来实现复杂的分页需求;

对服务器性能有一定的要求。

使用方法

高级分页需要使用Bootstrap Table提供的ajax选项,该选项具有以下几个参数:

method: ajax请求方式,默认为get;

url: ajax请求的URL地址;

data: 额外的请求参数,可以是对象或函数;

contentType: ajax请求的Content-Type值,默认为application/json;

dataType: ajax请求的数据类型,可以是text、xml、json、jsonp等;

ajaxOptions: 其他的ajax选项,如headers、timeout等;

queryParams: 设置额外的请求参数,可以是对象或函数;

ajax:自定义ajax请求函数,用于实现非标准的ajax请求;

ajaxConfig: 设置自定义的ajax选项,如dataType、headers等。

下面是一个使用服务端分页插件的例子:

 <table id="myTable"></table>

$("#myTable").bootstrapTable({

url: "/students.php",

method: "post",

dataType: "json",

pagination: true,

sidePagination: "server",

queryParams: function (params) {

return {

offset: params.offset,

limit: params.limit,

order: params.order,

search: params.search

};

},

responseHandler: function (res) {

return {

total: res.total,

rows: res.rows

};

},

columns: [

{

field: "id",

title: "ID"

},

{

field: "name",

title: "姓名"

},

{

field: "age",

title: "年龄"

},

{

field: "gender",

title: "性别"

}

]

});

在上面的例子中,我们使用了一个名为“server”的分页模式。这个分页模式表示所有的分页、排序等操作都由服务端来处理。具体来说,我们需要在服务端实现一个接口(例如叫做“students.php”),根据参数offset、limit、order、search等参数返回对应的数据。在前端,我们需要设置url为这个接口的地址,并开启pagination选项。queryParams函数用来设置额外的请求参数,这些参数会随着每次分页、搜索等操作被提交到服务端。responseHandler函数用来将服务端返回的数据格式化成BootstrapTable可以识别的格式(即total和rows)。

总结一下,使用高级分页需要做以下几个事情:

在服务端实现一个接口,用于返回分页数据;

在前端设置分页选项和ajax选项;

在前端设置columns选项,定义表格的列。

这些步骤看起来比较繁琐,但只要掌握了流程之后就可以快速上手了。

分页插件

某些情况下,服务端无法直接返回分页数据,或者返回的数据格式不符合BootstrapTable的要求。这时,我们可以使用一些jQuery分页插件来替代服务端分页。

常见的BootstrapTable分页插件包括Bootstrap Table Paginator和Bootstrap Table Fixed Pagination,它们具有以下特点:

左右对齐的分页组件,外观与Bootstrap一致;

支持跳转到任意页、显示总页数等操作;

可以使用Bootbox模态框等扩展组件。

比较常用的是Bootstrap Table Fixed Pagination插件,它具有以下几个特点:

固定在页面底部的分页组件,自适应宽度;

支持快速跳转到第一页和最后一页;

可以设置每页显示的数据量、可选的每页数据量等;

支持自定义样式和回调函数等。

使用Bootstrap Table Fixed Pagination插件需要以下步骤:

引入固定分页插件的CSS和JS文件(注意需要在BootstrapTable之前引入);

在选项中设置pagination为false,表示关闭BootstrapTable默认的分页模式;

在选项中设置fixedPagination为true,表示开启固定分页模式;

在选项中设置fixedNumber为true,表示鼠标滚动时固定分页组件不会跟随滚动;

在选项中设置fixedTotalPages为true,表示显示所有的页码。如果设置为false,则只会显示当前页和相邻的页码;

使用onLoadSuccess回调函数在数据加载成功后调用pagition插件的方法,初始化分页组件;

使用自定义的ajax请求函数,从服务端加载数据。

下面是一个使用Bootstrap Table Fixed Pagination插件的例子:

 <link rel="stylesheet" href="bootstrap-table-fixed-pagination.css">

<script src="bootstrap-table-fixed-pagination.js"></script>

<table id="myTable"></table>

$("#myTable").bootstrapTable({

pagination: false,

fixedPagination: true,

fixedNumber: true,

fixedTotalPages: true,

columns: [

{

field: "id",

title: "ID"

},

{

field: "name",

title: "姓名"

},

{

field: "age",

title: "年龄"

},

{

field: "gender",

title: "性别"

}

],

onLoadSuccess: function () {

$("#myTable").next(".fixed-table-pagination").pagination("start");

}

});

在上面的例子中,我们引入了固定分页插件的CSS和JS文件,然后开启了固定分页模式。每次加载数据完成后,我们调用pagination插件的start方法来初始化分页组件。由于使用了自定义的ajax请求函数,我们需要在这个函数中手动调用success函数,并将响应数据传递给BootstrapTable。

总结

分页是Web应用中一个十分重要的功能,可以提升用户体验和数据展现效果。本文介绍了Bootstrap Table中两个常见的分页方式:基本分页和高级分页。基本分页是默认开启的,使用起来非常简单,但只适用于少量数据。高级分页则需要在服务端实现接口,并使用ajax加载数据。如果服务端无法直接返回分页数据,可以使用一些jQuery分页插件来替代服务端分页。毋庸置疑,分页功能对于任何一个Web应用来说都是至关重要的,希望本文对读者有所帮助。