2016-09-02 5 views
2

をクリックし、列項目を二回preDrawCallbackとDrawCallbackを発射あなたは/非表示の列を表示するために行くときにこれは私のコードのjQueryのDataTable Colvisが

$(document).ready(function() { 
    $('#example').DataTable({ 
     dom: 'C<"clear">lfrtip', 
     "fnPreDrawCallback": function(oSettings) { 
      alert('pre'); 
     }, 
     "fnDrawCallback" : function() { 
      alert('+++++'); 
     } 
    }); 
}); 

である私のテストケース

https://jsfiddle.net/1c3Lmace/13/

を参照してくださいし、任意の列項目をクリックすると、各preDrawCallBackイベントとdrawCallbackイベントが2回発生することがわかります。

なぜそれが起こるか知っている人はいませんか?

データが読み込まれる前にローダーを表示して非表示にし、データが正常に読み込まれるようにしたいとします。すべてのヘルプは高く評価され

おかげ

+0

なぜfnPreDrawCallbackが必要ですか? –

+0

データをロードする前にローダーを表示するにはどうしたらいいですか? – anujeet

答えて

0

は、実際にイベントが二回発射されますが、ソートされた列の可視性を切り替えているときのみ。

クライアントサイド処理のローディングインジケータの表示に何も表示されないので、列の視認性の変更は非常に速く発生します。サーバー側の処理では、既に利用可能なオプションはprocessingです。

このようなことができます。しかし、列が非常に速くトグルされ、Processing...メッセージがすぐに消えてしまうので、alert()を入れなければなりませんでした。

$(document).ready(function() { 
    $('#example').DataTable({ 
     dom: 'C<"clear">lfrtip', 
     processing: true, 
     drawCallback : function() { 
      $('.dataTables_processing', $('#example').DataTable().table().container()).hide(); 
     } 
    }); 
}); 

$('#example').on('column-visibility.dt', function (e, settings, column, state) { 
    $('.dataTables_processing', $('#example').DataTable().table().container()).show(); 
    alert('Column visibility is toggled'); 
}); 

コードとデモンストレーションについては、this jsFiddleを参照してください。

+0

レコードが非常に大きくなったときにInternet Explorerのような読み込み機能が必要です.Colvisのクリックがしばらく時間がかかり、時にはjavascriptエラーが発生してスクリプトが実行に時間がかかりすぎる – anujeet

+0

残念です@ Gyrocode.com列が最初に隠れているので、警告が表示されるので、私の問題は解決しません。私はそれに反対したい。 – anujeet