2012-03-12 65 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