DataTables 在动态 fnAddData 时显示 "Processing..." 标签

DataTables show "Processing..." label when dynamically fnAddData

我有一个函数可以动态地将数据添加到数据表中。这是函数。

function fnClickAddRow() {
    for (i=0; i<10000; i++) {
        $('#example').dataTable().fnAddData( [
         giCount+".1",
         giCount+".2",
         giCount+".3",
         giCount+".4" ]
        );
    }
}

此函数将动态附加到我的 #example 数据表中,但在操作过程中屏幕看起来挂起,有没有办法使用 [= 显示加载/处理符号16=]"processing": 真,

没有通过 API 触发显示 "Processing" 消息的功能,但是有一个解决方法。

您需要使用 bProcessing: true(对于 DataTables 1.9)或 processing: true(对于 DataTables 1.10)启用处理指示器。

显示 ID 为 example 的 table 的处理指示器:

$('.dataTables_processing', $('#example').closest('.dataTables_wrapper')).show();

隐藏 ID 为 example 的 table 的处理指示器:

$('.dataTables_processing', $('#example').closest('.dataTables_wrapper')).hide();

另一件值得一提的事情是,由于某种原因,直到我添加 setTimeout 并延迟 100 毫秒后才显示处理指示器。

旁注,为了提高性能,您需要将 false 指定为 fnAddData() 的第二个参数,以指示不需要重新绘制。添加完行后,您可以调用 fnDraw() 重绘 table,请参阅 this jsFiddle

如果您先将数据放入一个数组中,然后再调用一次 fnAddData(),您可以进一步提高性能。

有关代码和演示,请参阅 this jsFiddle

现在似乎有一个 processing() plugin 允许您通过 API 执行此操作。

安装插件后,可以将其调用为(例如):table.processing([true/false]);