2016-07-15 13 views
3

Ich möchte eine bestimmte Zeile nach Wert innerhalb einer Tabelle Datatables aus einem modalen Fenster finden. Ich schaute auf https://datatables.net/reference/type/row-selector, aber wie ich verstehe, ist alles auf Selektoren oder interne IDs basiert. In meinem Fall habe ich 2 Spalten, wo ich in der Lage sein soll, nach der spezifischen Zeile zu suchen, um den Datensatz nach Ajax-Anfrage zu aktualisieren.Wie finden Sie eine bestimmte Zeile nach Werten in jQuery-Datatables?

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

EDIT

Hier mein Code jetzt - ich habe meine eigene einzigartige integrierte rowid und verwendet selector by id

Abrufen von Daten

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

Objekt speichern und Aktualisieren Datentabelle

$('#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

Ein 'search()' ist die Möglichkeit, bestimmte Zeilen nach Wert zu finden. Bitte erläutern Sie, was Sie mit "finden" und "bestimmte Zeile" und "Wert" meinen. Code ist mehr als geschätzt. – davidkonrad

+0

Ich habe einen Code hinzugefügt, um den Zweck zu erhalten – nhaberl

Antwort

3

Sie können fnFindCellRowIndexes verwenden, um den Zeilenindex zu finden, der bestimmte Daten in der angegebenen Spalte enthält.

Dann können Sie cell().data() API-Methode verwenden, um die Zelle zu aktualisieren.

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

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

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

Bitte beachten Sie, dass Sie fnFindCellRowIndexes.js zusätzlich zu jQuery Tables CSS/JS-Dateien enthalten müssen.

Siehe Code this jsFiddle für Code und Demonstration.

+0

Scheint die günstigste Lösung zu sein. In jedem Fall müssen Sie selbst Filter hinzufügen. – davidkonrad

+0

Absolut perfekte Antwort ... Was ich getan habe, ist, eine Ersatz-ID aus meinen 2 Werten zu erstellen und es auf die Option rowid zu setzen. Dann benutze ich die wunderbare row (string rowid) -Funktion, um die Zeile zu bestimmen und übergibt die Daten als ein Objekt (das ich analysieren musste, um die modalen Formularwerte zu setzen) an die .data() -Funktion - funktioniert perfekt! – nhaberl