Saya memiliki kumpulan data yang diambil ke dataTable melalui Ajax dan ada penundaan waktu yang berarti pengguna dapat melakukan tindakan sebelum dimuat. Saya harus memuat kumpulan data ini sekaligus, jadi kali ini saya tidak dapat menggunakan pemrosesan sisi server untuk menyajikannya dalam beberapa bagian.
Saya menggunakan Tombol dataTables untuk unduhan xls di dalamnya, yang saya nonaktifkan hingga kumpulan data tiba, lalu aktifkan kembali. Jika saya tidak melakukan ini, pengguna dapat mengunduh spreadsheet kosong sebelum permintaan ajax selesai. Jadi, untuk tombolnya, saya mengkodekannya seperti ini:
buttons: [
{
extend: 'excel',
text: '<i class="fa fa-file-excel-o"></i>',
titleAttr: 'Download to Excel',
enabled: false
},
],
Kemudian:
table.on( 'draw.dt', function () {
table.buttons().enable();
});
Saya perlu melakukan hal yang sama dengan kolom yang dapat dipesan karena, jika kolom yang dapat dipesan diklik sebelum data dimuat, pesan yang ditampilkan berubah dari 'Memuat' menjadi 'Tidak ada data yang tersedia di tabel' (dapat dimengerti), tetapi ini bukan pengalaman pengguna yang luar biasa.
Saya mengatur setiap kolom sebagai orderable: false
seperti ini:
columns: [
{
data: 'myData',
orderable: false, // all columns are set to false like this
},
Berhasil, ini mengatur semua kolom sehingga tidak dapat diurutkan. Yang tidak bisa saya lakukan adalah membuat semuanya dapat dipesan setelah data dimuat.
Apa yang saya harapkan akan menjadi mungkin adalah sesuatu seperti ini, tetapi tidak ada yang saya coba akan berhasil:
table.on( 'draw.dt', function () {
table.columns().orderable().enable();
});
Ada ide? Jika saya harus mengaktifkan setiap kolom satu per satu maka tidak apa-apa juga, saya juga tidak dapat menemukan cara untuk melakukannya.
Terima kasih sebelumnya.