数据表排序完成时触发事件

问题描述 投票:0回答:1

我正在初始化我的数据表,一切正常,除了我的某些列需要很长时间(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
和其他几个。我注意到的是,表格绘制基本上是瞬时的,但排序的实际完成是在此之后。但是,我不知道如何将事件绑定到完成的排序,或者数据表是否有办法处理这个问题。有什么建议吗?

javascript jquery sorting datatable datatables
1个回答
0
投票

我想你会想听听订单事件。
order 事件 - 当表中包含的数据被排序时触发。 您可以在这里找到更多信息https://datatables.net/reference/event/。 您可以在此处阅读有关如何监听数据表事件的更多信息:https://datatables.net/manual/events

编辑

我重新阅读了您的问题,并意识到我对您需要使用的具体事件可能是错误的。如果您说要在对列重新排序后触发操作(这实际上是我认为您想要的),您将需要查看列重新排序(列已由最终用户或 API 重新排序)。信息位于同一链接上。

© www.soinside.com 2019 - 2024. All rights reserved.