这篇文章记录一下datatables的服务器端模式。
当需要显示的数据量太大时,采用客户端模式效率就会比较低下,此时就需要服务器端模式。datatables的服务端模式开启方式:
serverSide: true
服务端模式需要ajax的配合,datatables的每一次翻页,查找,排序等时都会自动调用ajax。此时ajax可以是Object也可以是function。例如:
ajax: {
url: '...',
type: "POST",
contentType: 'application/json; charset=utf-8',
data: function (d) {
...
}
},//ajax
或者:
ajax: (d: any, callback) => {
that.http
.post<any>(
url,
d, {}
).subscribe(resp => {
callback(resp);
});
},
此时,d是一个对象,这是datatables自动赋予的,这个对象有如下属性:
columns:表格的列定义;
draw:表格绘制的次数;
length:表格一页的行数;
order:表格当前的排序方式;
search:表格当前的过滤条件;
start:需求数据开始的索引;
把这个对象发送到服务器端,服务器就可以根据这些信息发回前端需要的数据。服务器发回前端的数据需要包含以下属性:
data:具体的数据;
draw:同上;
recordsFiltered:在过滤条件下一共有多少条数据满足要求;
recordsTotal:数据总数;
datatables就可以根据这些信息对表格进行绘制。