2012-03-12 62 views
8

我正在使用DataTables插件來使我的表互動。如何刷新數據表

該表在頁面上由PHP進行回顯。

當我向數據庫添加一條記錄時,我使用jQuery load()加載表,但這會中斷DataTables。

如何更新表格,同時仍然保持DataTables完整?

注意:我使用DOM作爲數據源而不是服務器端處理。

+0

你能發佈你用來設置數據表的javascript代碼嗎? – 2012-03-12 20:48:10

+0

$( '#新')的dataTable({ \t \t \t 「iDisplayLength」:5, \t \t \t 「sPaginationType」: 「full_numbers」 \t \t});。 – 2012-03-12 20:51:05

+0

嘗試'「bDestroy」:true' – 2012-03-12 20:53:17

回答

9

如果要完整地重新加載整個表,請將您的初始數據表初始化代碼包裝在一個函數中。在頁面加載時調用該功能。當用ajax完全替換表格時,你可能應該刪除由插件創建的表格父div,作爲它創建的所有非表格DOm元素的包裝。如果表格ID =「example」,包裝id =「example_wrapper」。

這裏有足夠的代碼可能會幫助你順利完成任務。有個簡單的方法,只更新行,但由於請求的是一個完整的表重裝我已經按照那個

function initDataTables(){ 
    $('#myTable').datatables({/* put all current options here*/}) 

} 


/* within ready event of pageload */ 

$(function(){ 
    initDataTables(); 
    /* all other page load code*/ 

}); 

/* use $.get to reload table */ 

$.get(tableUpdateUrl, data, function(returnData){ 

    $('#myTable').parent().replaceWith(returnData); 

    /* re-initalize plugin*/ 

    initDataTables(); 
}); 
+0

非常感謝,稍微編輯它,它完美的作品:D – 2012-03-12 21:39:37

+3

這是一個很多額外的負載在頁面上是沒有必要的。 DataTables提供了將新行添加到數據集的方法。 – 2012-07-03 20:42:37

+1

什麼是tableUpdateUrl? – 2013-06-05 19:36:30

5

當您創建數據表,分配結果值到一個變量:

var table = $(".something").dataTable(); 

當您創建新項目時,可能通過AJAX確保返回表格需要顯示的屬性。然後,在您的success函數中,可以使用fnAddData方法向表中添加新行。這種方法需要在值的陣列,第一個進入在第一列中,第二次在第二,等等:

success: function(response){ 
    table.fnAddData([ 
     response.id, 
     response.name, 
     response.description, 
    ]); 
} 

可以詳細瞭解fnAddData方法here