2016-10-06 14 views
0

jQuery DataTableプラグインを使用していますが、私のページに問題があります。特定の行から情報を編集できます。これはAJAXとJavaScriptで行います。私の機能は次のようなものです:DataTableはコンテンツを更新しません

$.ajax ... code (Select * from and that stuff) 
    var html = ""; 
    var html += "<tr>"; 
    var html += "<td>"; 
    var html += ... Then I do this for all the result from the Select Query; 
    var html += "</td>"; 
    var html += "</tr>"; and finally 
    $('#MyTable').html(html); 
    $('#MyTable').DataTable().destroy(); //Looking here for answer I find that this could be a solution because before facing this issue I had the "cannot reinitialise datatable" error. 
    $('#MyTable').DataTable(); 

EDIT#2

$('#MyTable').DataTable().destroy(); 
This have an error, the correct function is $('#MyTable').dataTable().destroy(); 
However with this I get the same issue, the table now is uptated but shows all the records. 
$.ajax ... code 
success function... code and finally 
DrawMyTable(); 

DrawMyTableは別のAJAXで、コードは次のようなものです

編集:私は(テーブルの更新ではなく、唯一の10のすべての私の記録を示し、25またはユーザーがを選択するものは何でもされる。これによりを)これを使用していたみました何

$("#MyTable").DataTable().fnDestroy(); 
$("#MyTable").DataTable(); 

この:

$('#MyTable').DataTable({ 
      bRetrieve: true 
Or 
$('#MyTable').DataTable({ 
      destroy: true 

しかし、私は同じ結果を得る、私のテーブルが期待どおり読み込まれますが、私は何か(編集を編集しています私の成功ボタンが表示されますが、私のページをリロードするまでは私のテーブルは変更されませんし、私のテーブルのページ設定も再開されます。例えば、最初に10ページのレコードを表示します。編集機能は、すべてのレコードを表示するテーブル)私は間違って何をしていますか?どのようにしてこの問題を解決できますか?

PD。私はajax呼び出しから得られない他の情報を挿入する必要があるため、DataTableにAJAXオプションを使用することはできません。ここで

EDIT#3

My full JavaSript Code

PD2です。私のwebserviceはシンプルで、ちょうどいくつかのSQLクエリです。

答えて

0

私が正しく理解している場合は、DataTableが表示されています...
次に、ajaxを使用して、追加の行を追加します。

私はそれを行う方法は、pushに、DataTableで使用されるデータにajaxを使用して得られた新しい値をdrawにします。

データは、各列の配列を含む配列である必要があります...このように:

var myTable; 
var data; 
$(document).ready(function() { 
    data = [ ["Text for cell#1 - row 1","Text for cell#2 - row 1","Text for cell#3 - row 1"] 
      ["Text for cell#1 - row 2","Text for cell#2 - row 2","Text for cell#3 - row 2"] 
      ["Text for cell#1 - row 3","Text for cell#2 - row 3","Text for cell#3 - row 3"] 
      ]; 

    myTable = $('#myTable').DataTable({ 
     data:data 
    }); 

    // Draw the table 
    myTable.draw(); 
}); 

だから、その後... AJAXの成功コールバックでは、私がこのような配列を作成します結果:

var newData = ["Text for cell#1 - row 4","Text for cell#2 - row 4","Text for cell#3 - row 4"] 

その後pushそれdata配列にして、テーブルを再描画(あなたがそれを正しくフォーマットするループを使用する必要があります)。

data.push(newData); 
myTable.draw(); 
+0

私は私の問題を解決しようと、私はテーブルのすべてのレコードの代わりに、選択した数を示して何かを更新するとき、何をすることができ、今、私は私が試しに述べたオプションではなく、そのオプションを使用して動作するようですよ問題?私はすべての機能を備えたテキストファイルをアップロードすべきですか? – User1899289003

+0

事はDatataがしている作業をしようとしていることです...テーブルの内部html(trとtd)を行ごとに形成します。私がやることは、データを配列に与え、DataTableにその作業をさせることです。 –

+0

これにより、列の順序付けと検索機能も保持されます。行を "置き換える"場合...これらの関数はデータに基づいているため失敗します。 –