Datatables Jquery插件不支持注入?

时间:2011-11-03 22:23:08

标签: jquery jquery-plugins datatables

我正在使用jQuery ajax调用将数据作为html返回到空标记<table id=table01></table>,使用

$('table #table01').html(data);

表格正确呈现并填充数据,但是当我想使用列标题对列进行排序时,我收到一条错误消息 表格中没有数据

我做错了什么,或者jQuery的DataTables插件不适用于注入的html。

由于

3 个答案:

答案 0 :(得分:4)

如果要在初始化后向表中添加数据,则需要使用API​​:http://datatables.net/api#fnAddData。这允许DataTables查看您要添加的内容并相应地处理它。直接注入HTML是行不通的,因为DataTables不知道发生了这种情况 - 因此它试图在重绘时放置它所知道的内容(在这种情况下没有数据)。

另一种方法是在你进行HTML注入后设置后初始化表(可能会像olivieradam666建议的那样销毁表)。

阿伦

答案 1 :(得分:2)

我知道你不注入html。它肯定不是使用插件的预期方式,因为它基本上违背了目的。它说'没有数据',因为你实际上没有数据存储在某个地方的缓存中,并且能够进行排序,分页等。你所做的只是将html附加到表标签(而不是数据表)。如果您使用数据表的内置ajax功能,您只需将表中所需的数据作为json(或其他格式,如果提供解析)返回,并且数据表自动将其转换为用于显示的dom对象和用于排序的jquery对象这样

这也让你的生活更轻松。

P.S。当你使用插件的ajax功能时,它实际上将你的表包装在一堆div中,并为它添加了许多元素,所以你点击的标题在技术上并不是你所声明的所有“绑定”的表HTML是否有意义?它与数据表用于为您呈现表的对象缓存绑定。

这是一个如何使用ajax和dt的示例 http://datatables.net/release-datatables/examples/data_sources/ajax.html

答案 2 :(得分:1)

最可能的答案是你正在搞乱插件内部。如果您的库提供了内容的setter方法,请使用它。如果没有,我认为更安全的方法是销毁你的表,用你的数据填充一个新表,然后在其上重新设置数据表小部件。