我初始化我的數據表只是很好,除了我的一些列需要很長時間(3-5秒)進行排序的一切功能。我只有大約350行,但大約25列(不是一次都可見)。datatables排序完成時觸發事件
我正在做這樣的事情,使列可見,然後排序。
$('#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
和其他幾個人嘗試過。我注意到的是,表格繪製基本上是瞬時的,但實際完成的排序是在此之後。但是,我不知道如何將事件綁定到正在完成的排序上,或者如果數據表有辦法處理這種情況。有什麼建議麼?
如果你已經有了默認的排序工作,你可能通過自己調用'draw()'來與它衝突。當你評論上述內容時,速度是否正常? – charlietfl
你可以使用'processing:true'嗎? –
@ Gyrocode.com這似乎沒有什麼區別。 – jonmrich