2016-08-17 33 views
1

我們已經使用DataTable.js來綁定網格。我們有大約數千條記錄,所以最初我們將綁定500條記錄,然後我們逐一插入它們。但是在逐個插入時屏幕會凍結。我們已經編寫了JavaScript代碼來逐個插入它。DataTable JS插入問題

所有的
function bindLoadOverView() { 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     dataType: 'json', 
     url: "../Loads/board.aspx/bindView", 
     success: function(data1) { 
     var aData = data1.d; 
     for (var i = 500; i < aData.length; i++) { 
      table.row.add([ 

      null, 
      aData[i].row1, 
      aData[i].row2 
      ]).draw(false); 
     } 
     }) 
    }); 
} 

回答

0

首先,在你的dataTable初始化設置deferRendertrue。這將防止dataTables在不需要時執行一些緩慢的DOM操作。 另外請在add()之後跳過draw(),這是完全多餘的。

要防止頁面/其他腳本被阻塞,可以使用interval來插入行。我知道你只是想靜靜地在後臺插入其餘的行。在插入行時,使用間隔會給其他線程空間進行處理。例如:

var index = 500, 
    max = aData.length, 
    insert = window.setInterval(function() { 

     table.row.add([ 
     null, 
     aData[i].row1, 
     aData[i].row2 
     ]) 

     index++ 
     if (index == max) window.clearInterval(insert) 

    }, 20) 

之後,你可以draw()表,如果由於某種原因需要或必要的。