0
我有一個MVC應用程序,我從數據庫中獲取5000條記錄,並在JSOn格式格式中返回操作並呈現Jquery.DataTable.js 1.9版。 0格。應用程序無延遲地返回數據,但需要時間在網格中進行渲染。下面是代碼Jquery.Datatable.js需要時間來呈現記錄
$.ajax({
url: "http://locationhost/Mycontroller/myacton", type: "Get", contentType: "application/json; charset=utf-8",
data: { 'param': param1, 'param2': param2, },
dataType: "json",
success: function (data) {
$('#DisableDiv').html("");
var items = '';
var rows = '';
$('#divGrid').DataTable().fnClearTable();
$('#divGrid').DataTable().fnDestroy();
if (data.length > 0) {
$.each(data, function (i, item) {
rows = "<tr>........records......</tr>"
$('#divGrid tbody').append(rows);
});
table = $('#divGrid').DataTable({
"aoColumnDefs": [
{
'bSortable': false,
'aTargets': [0, 8],
}],
"aoColumns": [{ "bSortable": false }, null, null, null, null, null, { "sType": "currency" }, null, { "bSortable": false }],
"bPaginate": true,
"bInfo": true,
"bFilter": false,
"bLengthChange": true,
"sPaginationType": "full_numbers",
"iDisplayLength": 10
});
table.fnSort([[7, 'desc']]);
}
else {
$('#DisableDiv').html("No data available.");
$("#btnDownload").attr("href", "#");
}
}
},
error: function (data) {
$('#DisableDiv').html("");
}
});
您一次渲染到UI的記錄數? – stylishCoder
您的每個循環都很慢,您在每次迭代時調用append(),請求DOM。相反,在每個循環內連接一個字符串,並將其用作HTML標記一次(每個循環之外)。或者使用'documentFragment'([see](http://stackoverflow.com/questions/14203196/does-using-a-document-fragment-really-improve-performance))構建表格HTML標記。但最好的辦法是隻從服務器發送相關數據以顯示當前表格分頁。這意味着要更改服務器端代碼以處理任何過濾參數 –