2016-05-16 74 views
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(""); 
     } 
    }); 
+0

您一次渲染到UI的記錄數? – stylishCoder

+0

您的每個循環都很慢,您在每次迭代時調用append(),請求DOM。相反,在每個循環內連接一個字符串,並將其用作HTML標記一次(每個循環之外)。或者使用'documentFragment'([see](http://stackoverflow.com/questions/14203196/does-using-a-document-fragment-really-improve-performance))構建表格HTML標記。但最好的辦法是隻從服務器發送相關數據以顯示當前表格分頁。這意味着要更改服務器端代碼以處理任何過濾參數 –

回答