【发布时间】:2013-08-18 12:32:30
【问题描述】:
我有一个表格,它使用自定义的服务器端初始化参数获取服务器端的数据,这些参数根据生成的报告而有所不同。生成表格后,用户可以打开一个弹出窗口,他们可以在其中添加多个要搜索的附加过滤器。我需要能够使用与原始表相同的初始化参数,并使用 fnServerParams 添加新参数。
我不知道如何使用数据表 API 获取原始初始化参数。我原以为我可以获取对该对象的引用,使用 fnSettings 获取设置,然后将这些设置传递给一个新的数据表实例,如下所示:
var oSettings = $('#myTable').dataTable().fnSettings();
// add additional params to the oSettings object
$('#myTable').dataTable(oSettings);
但是通过 fnSettings 返回的变量不是我需要的并且不起作用。
在这一点上,我似乎要重新设计一些东西,以便我可以将初始化参数作为变量传递并根据需要添加参数,除非有人可以引导我朝着正确的方向前进。
编辑: 按照 tduchateau 在下面的回答,我可以通过使用
var oTable= $('#myTable').dataTable(),
oSettings = oTable.fnSettings(),
oParams = oTable.oApi._fnAjaxParameters(oSettings);
oParams.push('name':'my-new-filter', 'value':'my-new-filter-value');
并且可以确认我的新服务器端参数已添加到现有参数中。
但是,我仍然不完全在那里。
$('#myTable').dataTable(oSettings);
给出错误:
DataTables warning(table id = 'myTable'): Cannot reinitialise DataTable.
To retrieve the DataTables object for this table, please pass either no arguments
to the dataTable() function, or set bRetrieve to true.
Alternatively, to destroy the old table and create a new one, set bDestroy to true.
设置
oTable.bRetrieve = true;
没有摆脱错误,并设置
oSettings.bRetrieve = true;
导致表不执行 ajax 调用。设置
oSettings.bDestroy = true;
在设置时丢失所有自定义参数
oTable.bDestroy = true;
返回上述错误。并简单地调用
oTable.fnDraw();
使用其原始设置重新绘制表格。
【问题讨论】:
-
你有没有想过这个问题?我遇到了类似的问题。
-
@Voodoo,请看下面我的回答
标签: datatables