2017-12-20 22 views
1

私は自分のウェブサイトにdatatableを使用しています。更新DataTables行データ

HTMLのようなものです::

今、私は、任意の単一のレコードの任意のデータを更新するたびに、私はちょうどのようなAJAX使用して、その行のデータを更新

<table class="datatable"> 
    <tr id="user_row_1"> 
     <td>Name 1</td> 
     <td>Role 1</td> 
     <td>XYZ 1</td> 
    </tr> 
    <tr id="user_row_2"> 
     <td>Name 2</td> 
     <td>Role 2</td> 
     <td>XYZ 2</td> 
    </tr> 
    <tr id="user_row_3"> 
     <td>Name 3</td> 
     <td>Role 3</td> 
     <td>XYZ 3</td> 
    </tr> 
</table> 

jqueryのことのようである:

oTable = $(".datatable").DataTable(); 
.... 
$("#user_row_3").html(response); 

Ajaxレスポンスコード:

<td>Name 3 Updated</td> 
<td>Role 3 Updated</td> 
<td>XYZ 3 Updated</td> 

問題

しかしように私は、DataTableのAPIを使用してデータを取得:それは古いデータを返す

var table = $('#user-list').DataTable(); 
var rowData= table.row('#user_row_160').data(); 
$.each($(rowData),function(key,value){ 
    console.log(value["name"]); 
}); 

どのようにdatatable行を正確に更新するか。

答えて

1

あなたが細胞または行全体の値を変更するときは、常にまた、APIを使用する必要があります。

table.row("#user_row_3").data(response).invalidate().draw() 

のDataTableを使用すると、DOMにいくつかの変更を行ったことを知ってする機会を持っていません。とにかく双方向バインディングではDataTablesは機能しませんが、基本的にはそれ自体が基礎となるデータセットに従ってページを更新するDOM-「ファクトリ」です。

さらに、未処理のHTMLは挿入しないでください。データは、テーブルを初期化したのと同じ形式で挿入してください。あなたは私たちが知っていることをやりません。あなたのテーブルは、DOMのテーブルである場合は、値の配列であることを応答をサニタイズすることができます

var d = $(response, 'td').map(function(i, td) { 
    return td.textContent 
}) 
table.row("#user_row_3").data(d).invalidate().draw() 
+0

私が直接、forループを使用してテーブルを作成し、JSONを通じて任意のデータを渡すか、任意の配列を使用していません。どのように更新行の時にデータを渡すのですか? –

+0

@ Er.KT、 "* forループを使用してテーブルを直接作成しています... *" for ...のループ?例を使って質問を更新できますか? DOMテーブルを初期化しない限り、データを挿入することはできませんが、 'table.row.add()'にJSONまたは文字列の配列を使用したり、 '$(tr)'要素を渡したりすることはできません... – davidkonrad

+0

私は質問を更新して、どのように私はdatatableをぞっとするのか見ることができます –

関連する問題