這篇文章記錄一下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就可以根據這些信息對錶格進行繪製。