我有一个表格,它使用自定义的服务器端初始化参数获取其服务器端的数据,这些参数根据生成的报告而有所不同。生成表格后,用户可以打开一个弹出窗口,他们可以在其中添加多个要搜索的附加过滤器。我需要能够使用与原始表相同的初始化参数,并使用 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();
导致表格使用其原始设置重新绘制。