2017-01-19 22 views
1

私はテーブルにDataTableを追加しました。私はPHPとSQLを使用してAJAX経由でデータを取得しています。非常に最初の負荷では、最初の検索を実行した後、すべてが問題なく、すべてが意図どおりに機能します。しかし、検索に使用されたすべてのコードがもう一度実行されている間に、もう一度検索すると、DataTableの機能が停止しているようです。JQuery AJAX DataTable読み込み中の標準関数

DataTableファイルの重大な部分にアラートを追加し、最初の検索後にファイルに戻さないようにしました。

私は、データの内容全体が検索後に変更されたことを見て、DataTableを "再初期化"する必要があるかもしれません。

オンラインで探していた時間が長くなりました。多くの提案が破棄され、消去されていますが、何も動作していないようです。

$.ajax({ 
    type:'POST', 
    url:'/ITSMIS/data/asset/search.php', 
    data:HardwareAsset, 
    dataType: "html", 
    success:function(data){ 

     LoadDataTableHeaders(); 

     var NotSearched = document.getElementById("no-search-default"); 
     var TableContainer = document.getElementById("data-table-container"); 
     var NoSearchResults = document.getElementById("no-search-results"); 

     if(NotSearched.style.display !== 'none'){ 
      $(NotSearched).hide(); 
     } 
     if(data){ 
      if(TableContainer.style.display == 'none'){ 
       $(TableContainer).show(); 
      } 
      $(NoSearchResults).hide(); 
      $('#data-table-results').html(data); 

      $("input:checkbox:not(:checked)").each(function() { 
       var DataTableColumn = "table ." + $(this).attr("name"); 
       $(DataTableColumn).remove(); 
      }); 

      if (! $.fn.DataTable.isDataTable('#data-table')) { 
       $('#data-table').DataTable(); 
      } 
      else{ 

      } 
     } 
     else{ 
      if(NoSearchResults.style.display == 'none'){ 
       $(TableContainer).hide(); 
       $(NoSearchResults).show(); 
      } 
     } 
    } 
}) 
:ここ

は、あなたが見ることができるように私はすべての仕事をいけないなどの検索、それは最初の検索後に異なるが、並べ替え、ページネーションとして、この問題を解決する方法がわからない何かをする設定されている、私のコードです
+0

raw htmlテーブルにデータをダンプする場合は、すべての行を無効にして再描画する必要があります。 DataTableは、基礎となるhtmlを変更していることを知らない – Bindrid

+1

いつもテーブル全体を破壊して再構築することができる – Bindrid

答えて

1

これは、すでに終了したときにテーブルを無効にして再描画する必要があります。
は(追加「フル休息」パラメータ私は、この発見後:https://datatables.net/reference/api/draw())を

if ( $.fn.DataTable.isDataTable('#data-table')) { 
    $('#data-table').DataTable().rows().invalidate().draw('full-reset'); 
} 
else{ 
     $('#data-table').DataTable(); 
} 
+0

これはページ番号が固定されているようだが、行数のオプションも検索されているようだ。ソートはまだリロードされていないようです。しかし、残りのための修正のためにたくさんありがとう!とても有難い。 – TheTechnicalPaladin

+0

あなたはいつも破壊し、各Ajaxコールでテーブルを再構築することができます – Bindrid

+0

を見てくださいhttps://datatables.net/reference/option/destroy – Bindrid

1

は、このオプション

$('#data-table').DataTable({ 
    destroy: true 
}); 

を呼び出すだけで、再初期化のDataTableを試みることができるのDataTableが前を破壊できるようになりますインスタンスが存在する場合はインスタンスを返し、初めての場合と同じように初期化します。

+0

ありがとう助け:) – TheTechnicalPaladin

関連する問題