我创建了一个自定义按钮,该按钮将允许用户选择要输出到CSV的列,因此该按钮不会作为表初始化的一部分创建。我有一个模态,该模态弹出了从列标题创建的复选框以供选择。值得注意的是,我在每个列标题上都有正则表达式搜索。问题是我正在使用服务器端处理,因此,唯一导出的行是可见的行。作为一种变通方法,我将其设置为获取page.info()。recordsDisplay并将页面的长度设置为该长度并绘制。弹出该模式,并说一旦表被完全填充,它将从服务器加载数据,该模式的HTML将更改为复选框以进行导出。导出后,表格将恢复为默认长度。我需要做的是在行完全呈现后捕获,以便可以进行HTML切换。现在,我要设置超时时间。如果现在应用搜索,则填充数据可能需要一段时间,因为大约有13,000行。最好的方法是什么?有没有更有效的方法?
var tableHeaders = [];
var table = $('#example').DataTable().columns().every( function () {
tableHeaders.push( $(this.header()).text() );
});
var pageLength = table.page.info().length;
table.context['0']._iDisplayLength = table.page.info().recordsDisplay;
table.draw();
答案 0 :(得分:0)
服务器端处理参数start/length
可能会出现问题,该参数定义每次绘制时从服务器请求的数据部分。
如果您的源数据具有大量行,则可能不会一次全部发送它们以利用服务器端处理。因此,您可以尝试操纵这些参数。
或者,您可以尝试利用每次重绘时触发的draw
事件。