我正在初始化我的数据表,并且除了我的一些列需要很长时间(3-5秒)进行排序之外,所有功能都正常运行。我只有大约350行,但大约有25列(并非一次全部可见)。
我正在做这样的事情,使列可见,然后排序。
$('#main_index').on('click', 'thead th', function() {
var idx = table.column(this).index();
selected_data = table.column(idx).dataSrc();
if (selected_data == 'diabetes_full') {
table.order([4, 'desc']);
table.columns('.col_rank').visible(false);
table.column(3).visible(true);
table.draw();
$(".rank").hide();
$("#diabetes_full_rank").show();
} else if (selected_data == 'pop_with_diabetes') {
table.order([6, 'desc']);
table.columns('.col_rank').visible(false);
table.column(5).visible(true);
table.draw();
$(".rank").hide();
$("#pop_with_diabetes_rank").show();
}
});
就像我说的,这有效但有时有点慢。我不确定我是否能找到加快速度的方法(建议欢迎),但我希望能够在排序仍在进行时显示加载消息并在排序时隐藏它完整。
我尝试了table.draw()
之外的各种事情,包括:
$.when(table.draw()).then(//function to hide loading message);
我尝试过使用drawCallback
和其他几个人。我注意到的是,表格绘制基本上是即时的,但实际完成排序之后。但是,我不知道如何将事件绑定到完成的排序,或者数据表是否有办法处理它。有什么建议吗?
答案 0 :(得分:0)
我想你会想听听订单活动 订单事件 - 在订购表中包含的数据时触发。 您可以在https://datatables.net/reference/event/找到更多信息。 您可以在此处详细了解如何收听数据表事件:https://datatables.net/manual/events
修改
我重新阅读了您的问题,并意识到您可能需要使用的具体事件出错。如果您说要在重新排序列后触发操作(这实际上是我想要的),您将需要查看列重新排序(列已由最终用户或API重新排序)。信息在同一链接上。