2016-07-15 4 views
3

私は、モーダルウィンドウからdatatablesテーブル内の値で特定の行を探したいと思います。 私はhttps://datatables.net/reference/type/row-selectorを探していましたが、それはすべてセレクタまたは内部IDに基づいていることを理解しています。 私の場合、私は、特定の行を検索してajaxリクエストの後にレコードを更新できるようにしたい2列を持っています。jQueryのデータ型の値で特定の行を検索するにはどうすればよいですか?

success: function (data) { 
       if (data.status_id > 0) { 
        alert(data.info); 
       } else { 
        alert(data.info); 
       } 
       contractsTable.row.add(dataJSON).draw(false); 
     } 

今ここでEDIT

私のコード - 私はDataTableの

保存とリフレッシュを rowid私自身のユニークなを構築し、データオブジェクトに

... 
var d = datatable.row(this).data(); 
... set form values and so on 

を取得selector by id

を使用しました

$('#contractEditSave').on('click', function (e) { 

     dataJSON = { 
      id: $('#contractEditForm').data('contractid'), 
      member_id: $('#contractEditForm').data('memberid'), 
      member_name: $('#contractEditModalTitle').text(), 
      box_id: $('#contractBox').val(), 
      name: $('#contractName').val(), 
      description: $('#contractDescription').val(), 
      start: $('#contractStart').val(), 
      end: $('#contractEnd').val(), 
      amount: $('#contractAmount').val(), 
      unit: $('#contractUnit').val(), 
      max: 1 
     }; 

     $.ajax({ 
      type: 'POST', 
      url: '/save', 
      data: JSON.stringify(dataJSON), 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'json', 
      success: function (data) { 
       if (data.status_id == 0) 
        datatable.row('#' + dataJSON.id).data(dataJSON); //if update 
        ... 
       } else { 
        datatable.row.add(dataJSON).draw(false); //if insert 
        ... 
       } 



       $("#contractEditModal").modal('hide'); 

      } 
     }); 
    }); 
+0

'search()'は特定の行を値で見つける方法です。 "find"と "特定の行"と "値"の意味を詳しく教えてください。コードは高く評価されています。 – davidkonrad

+0

目的を達成するためのコードを追加しました – nhaberl

答えて

3

fnFindCellRowIndexesを使用すると、指定した列の特定のデータを保持する行インデックスを見つけることができます。

次に、cell().data() APIメソッドを使用してセルを更新できます。

var table = $('#example').DataTable(); 

var rowId = $('#example').dataTable() 
    .fnFindCellRowIndexes('Angelica Ramos', 0); 

table 
    .cell(rowId, 0) 
    .data('Angelica Ramos (UPDATED)') 
    .draw(false); 

あなたはjQueryのDataTableのCSS/JSファイルに加えて、fnFindCellRowIndexes.jsを含める必要がありますのでご注意ください。

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

+0

最も有益なソリューションと思われます。いずれにしても、自分でフィルタリングを追加する必要があります。 – davidkonrad

+0

絶対に完璧な答え... 私が行ったことは、私の2つの値から代理IDを作成し、それをROWIDオプションに設定することです。次に、素晴らしい行(文字列rowid)関数を使って行を決定し、データをオブジェクト(私はモーダルフォームの値を設定するために解析しなければならなかった)として.data()関数に渡します。 – nhaberl

関連する問題