2016-07-19 16 views
1

Wir können cell().data() verwenden, um Zellendaten zu setzen. Aber was, wenn wir nur orthogonal Zelleneigenschaften aktualisieren müssen, aber nicht Haupt display Daten, die in der Zelle gerendert wird? I.e. wir haben diese Daten für die Zelle, und wir wollen nur current_value aktualisieren, während display unverändert im DOM zu halten:Wie werden nur orthogonale (aber nicht angezeigte) Daten der Zelle in DataTables aktualisiert?

"digit": { 
    "display": "<select><option selected value=`1`>1</option><option value=`2`>2</option></select>", 
    "current_value": "1" 
} 

Mein Anwendungsfall wird mit <select> innerhalb einer Zelle - wenn die Option Änderungen, die ich an Ort und Stelle wählen Sie behalten möchten und Ändern Sie nur orthogonale Daten.

+0

Könnten Sie vielleicht zeigen, was man einen JSFiddle bedeutet mit? Eine bessere Vorstellung davon, was Sie erreichen möchten, kann uns helfen, Ihnen zu helfen. – annoyingmouse

+0

@annoyingmouse wird – Andrey

Antwort

1

Sie können die API-Methode row().data() verwenden, um die Daten für die ausgewählte Zeile abzurufen/festzulegen.

Zum Beispiel current_value zu erhöhen, wenn eine Zeile auf geklickt wird:

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

$('#example tbody').on('click', 'tr', function() { 
    var data = table.row(this).data(); 

    data.digit.current_value++; 

    table 
     .row(this) 
     .data(data) 
     .draw(false); 
}); 
+0

tun Ich möchte Zellendaten zu aktualisieren, nicht Zeile Daten – Andrey

+0

Scheint, als gäbe es ein Missverständnis. Beispiel Daten in meiner Frage sind Daten für einzelne Zelle (nicht Zeile), mit [orthogonalen] (https://datatables.net/manual/data/orthogonal-data) Eigenschaft '' 'current_value''' und' '' anzuzeigen '' 'Eigenschaft, die innerhalb einer Zelle gerendert wird. Ich möchte nur die '' 'current_value''' Dateneigenschaft dieser einzelnen Zelle aktualisieren, während' '' display''' unverändert bleibt. Und das ist, was ein Problem verursacht, weil '' 'cell(). Data()' '' ganze Daten für die Zelle neu zu schreiben scheint, was eine erneute Zelle verursacht, was ich vermeiden möchte. Vielleicht erklärt jsfiddle dies besser – Andrey

+1

@Andrey, der Code in meinem Beispiel tut genau das, aktualisiert es 'current_value' ohne andere Felder zu berühren. Click Event Handler dient nur zur Veranschaulichung der Idee. Wenn Sie ein einfaches jsFiddle bereitstellen könnten, wäre das eine Hilfe. Sie können [diese jsFiddle] (https://jsfiddle.net/ep2f95za/) für einen Start verwenden. –