Ich initialisiere meine Datentabelle einwandfrei und alles funktioniert, außer dass das Sortieren einiger meiner Spalten lange dauert (3-5 Sekunden). Ich habe nur etwa 350 Zeilen, aber etwa 25 Spalten (nicht alle auf einmal sichtbar).
Ich mache so etwas, um eine Spalte sichtbar zu machen und sie dann zu sortieren.
Code: Select all
$('#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();
}
});
Wie ich schon sagte, das funktioniert, ist aber manchmal etwas langsam. Ich bin mir nicht sicher, ob ich eine Möglichkeit finde, die Dinge zu beschleunigen (Vorschläge willkommen), aber ich würde gerne eine Lademeldung anzeigen können, wenn die Sortierung noch stattfindet, und sie ausblenden, wenn die Sortierung abgeschlossen ist.
Ich habe alle möglichen Dinge ausprobiert, die mit table.draw() funktionieren, einschließlich:
Code: Select all
$.when(table.draw()).then(//function to hide loading message);
Ich habe versucht, drawCallback und mehrere andere zu verwenden. Was mir auffällt, ist, dass die Tabellenauslosung grundsätzlich augenblicklich erfolgt, der eigentliche Abschluss der Sortierung jedoch erst danach erfolgt. Ich weiß jedoch nicht, wie ich ein Ereignis an die vollständige Sortierung binden soll oder ob Datentabellen eine Möglichkeit haben, damit umzugehen. Irgendwelche Vorschläge?