我使用jQuery数据表插件渲染表作为jQuery数据表。我没有使用任何服务器端调用来获取表行细节。
我正在使用jQuery从用户当前正在查看的页面上可用的信息生成表HTML。
<table cellpadding="0" cellspacing="0" border="0" class="display" id="list_table">
<thead>
</thead>
<tbody>
</tbody>
</table>
当用户单击链接时,我使用jQuery为表构建所需的行,并将其设置为表主体。
之后,我初始化dataTable,如下所示:
$('#list_table').dataTable({
"bProcessing": false,
"bJQueryUI": true,
"bPaginate": true,
"bAutoWidth": false,
"bFilter" : true,
"bDestory" : true,
"oLanguage": { "sZeroRecords": "No data available", "sSearch" :"Filter" }
});
当用户第一次点击链接时,上面的工作正常。但如果用户再次点击,I get error dataTable给出错误:
DataTables warning (table id = 'list_table'): Cannot reinitialise DataTable. .....
即使表被显示,它也失去了它的Datatable CSS,搜索不再工作,下一个先前不再工作。
我尝试了各种选项,如设置"bRetrieve" : true
也尝试检查数据表对象是否可用:
if (typeof dTable == 'undefined') {
dTable = $('#list_table').dataTable({
"bProcessing": false,
"bJQueryUI": true,
"bPaginate": true,
"bAutoWidth": false,
"bFilter" : true,
"bDestory" : true,
"oLanguage": { "sZeroRecords": "No data available", "sSearch" :"Filter" }
});
} else {
dTable.fnClearTable();
}
但是似乎什么都不起作用。我已经使用DataTable与服务器端ajax调用重新加载数据从服务器,它的工作很好,但在这种情况下,我不知道如何解决这个问题。
谢谢。Jay
如果dataTable已经被初始化,它不能再初始化,所以如果dataTable
不是空的,你可以尝试像这样销毁dataTable
:
if(oTable!=null) oTable.fnDestroy();
你会在dataTable论坛上得到更好的回答…因为在这里我们分享了一些对所有人都有用的常见问题。
这里是该论坛的链接。<<strong> DataTable论坛/strong>
这个问题的一个快速而简单的修复方法是将初始表放入div中,并在再次构建表之前对该div运行empty().append()。我认为bDestroy参数会照顾css和列标题的问题,但它没有。希望这对大家有所帮助!