'datatable'jquery插件和两个表(ajax相关)的问题

时间:2011-04-27 06:07:27

标签: jquery-plugins jquery datatables

我有两个标签,其内容由ajax加载。他们的内容都有一个表格。我想将'datatable'jquery插件应用于两个表。表具有相同的id,因为它们是由函数创建的。但它们的行是不同的。

datatable插件很好地应用于第一个选项卡表,但在第二个选项卡表中出现此错误:

"DataTables warning (table id = 'dttable'): Cannot reinitialise DataTable.

要检索此表的DataTables对象,请将无参数传递给dataTable()函数,或将bRetrieve设置为true。或者,要破坏旧表并创建一个新表,请将bDestroy设置为true(请注意,可以通过API对配置进行大量更改,这通常要快得多)。“

我使用“bDestroy”:在datatable插件中定义为true。但这样插件不会显示在第二个表中。

你帮我吗?

5 个答案:

答案 0 :(得分:3)

您的问题是两个表都具有相同的ID,这是无效的HTML。当您尝试初始化第二个Databable时,您的选择器只找到第一个表并尝试再次初始化第一个表上的Datatables,这会导致您获得的错误。

您需要更改功能以使用唯一ID创建每个表,并按相应的ID初始化每个表。

答案 1 :(得分:1)

为什么不用className而不是ID设置Datatables然后它可以应用于它们?

检索数据时,您可以使用类似$('。dataTableStyle')。eq(1)的内容来获取相关信息。

答案 2 :(得分:0)

我正在使用mvc3,我的问题是在视图中初始化dataTable,然后使用另一个dataTable呈现局部视图。问题不在于2个表的id中,而是在框架中呈现部分视图的方式。就我而言,我不得不将脚本或脚本引用移动到托管局部视图的视图中。我使用谷歌地图api有类似的问题。

答案 3 :(得分:0)

试试这段代码

$(document).ready(function() {
         oTable = $('#DataTables_Table_0').dataTable({   //DataTables_Table_0 <-------table id
                iVote: -1,   //your field name 
                "bRetrieve":true
            });

        oTable.fnSort( [ [1,'desc'] ] );
     });

答案 4 :(得分:0)

当您要更改表数据时,在函数事件中使用它

$('#tbl_resultates').dataTable().fnDestroy();

并添加

"bRetrieve": true,

$('#tbl_resultates').dataTable({