我正在使用DataTables 1.10.9和客戶端處理。爲什麼DataTables渲染功能被稱爲3次?
我正在使用'ajax'選項來檢索DataTable的數據。
我在'render'函數中放了一個小的console.log(renderCount)。
表中有4,921行。
但是,控制檯顯示渲染函數總共被調用了14,772次!
(14772 =行×3 + 11的數),我相信這將被減慢渲染過程。
更重要的是 - 我有「deferRender」選項 - 所以我本來以爲渲染函數應該只能被稱爲10倍,這是默認的頁面大小。
怎麼回事?
除了服務器端處理 - 我該如何改善此表的初始渲染性能?
這裏是一個行的數據的一個例子:
{
Id: 1,
Type: "Purchases",
LifecycleStatus: "Manual",
ReceivedAtLocal: "04/02/2016 20:45:16",
ModifiedAtLocal: "04/02/2016 21:45:16",
Operator: "a-mjohn",
PartNumber: "IXAWGCAUNVJHONP"
}
下面是表的定義代碼:由render
選項定義
var renderCount = 0;
transactionTable = $("#tblTransactions").DataTable({
"searchDelay" : 500,
"bDestroy": true,
"ajax": window.getTransactionDataUrl,
"processing": false,
"deferRender" : true,
"columns": [
{
'render': function (data, type, full, meta){
// Other code omitted for brevity
renderCount++;
console.log(renderCount);
return "";
},
"bSortable": false
},
{
'render': function (data, type, full, meta) {
return '<input type="checkbox">';
},
"bSortable": false
},
{ "data": "Id" },
{ "data": "Type" },
{ "data": "LifecycleStatus" },
{ "data": "Operator" },
{ "data": "PartNumber" },
{ "data": "ReceivedAtLocal" },
{ "data": "ModifiedAtLocal" },
{ "defaultContent": "<button class='btn btn-primary btn-xs' data-toggle='modal' data-target='#detailsModal'>Details</button>", "bSortable": false },
{ "defaultContent": "<button class='btn btn-primary btn-xs' data-toggle='modal' data-target='#auditModal'>Audit</button>", "bSortable": false },
{ "defaultContent": "<button class='btn btn-primary btn-xs' data-toggle='modal' data-target='#commentModal'>Comments</button>", "bSortable": false }
],
"rowId": "Id",
'order': [[7, "asc"]],
'rowCallback': function (row, data, dataIndex) {
// Get row ID
var rowId = data["Id"];
if ($.inArray(rowId, window.transIndexPage.rows_selected) !== -1) {
$(row).find('input[type="checkbox"]').prop("checked", true);
$(row).addClass("selected");
}
}
});
感謝您的解釋重新:**渲染**功能。手冊中引用的「數據類型」究竟是什麼意思?我想這不是'int'vs'string',而是更像'數據使用率'=>,如'使用列值的這種表示來排序'和'使用這個其他值來顯示'? – JTech
在我的問題 - 我說我已經使用'deferRender'選項。任何其他建議(除了服務器端處理)都可以提高性能? – JTech
@JTech,jQuery DataTables請求將用於排序,搜索和顯示的不同值。你可以選擇使用三個不同的值,這就解釋了爲什麼'render'被多次調用。 –