2016-07-15 64 views
3

我想从模态窗口中的数据表格中按值查找特定的行。 我正在寻找https://datatables.net/reference/type/row-selector,但据我所知,它都基于选择器或内部ID。 在我的情况下,我有2列,我希望能够查找特定的行以更新ajax请求后的记录。如何通过jQuery数据表中的值查找特定行?

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

编辑

这里我的代码现在 - 我已经建立了自己独特的rowid和使用selector by id

检索数据对象

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

保存并刷新数据表

$('#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()'是按值查找特定行的方法。请详细说明“查找”和“特定行”和“值”的含义。代码不胜感激。 – 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); 

请注意,你需要包括fnFindCellRowIndexes.js除了jQuery的数据表CSS/JS文件。

查看this jsFiddle的代码和演示。

+0

似乎是最有利的解决方案。无论哪种方式,你都必须自己添加一些过滤。 – davidkonrad

+0

绝对完美的答案... 我所做的虽然是从我的2值中创建一个代理ID,并将其设置为rowid选项。然后我使用美妙的行(字符串rowid)函数来确定行并将数据作为一个对象(我必须解析以设置模态表单值)传递给.data()函数 - 完美无缺! – nhaberl

相关问题