2014-11-05 7 views
8

I dynamisch neue Zeile hinzufügen auf Datentabellen unter Verwendung der 1.10.2 table.row.add() Methode mit diesem Code:put Attributdaten auf Zeile hinzufügen auf Datentabellen 1.10

table.row.add([ 
    '', 
    name, 
    target_l, 
    details, 
    panel.html()  
]).draw(); 

I diesen Aufschlag hergestellt:

<tr role="row" class="odd"> 
    <th>1 .</th> 
    <td class="sorting_1">ID Fee</td> 
    <td>All students</td> 
    <td></td> 
    <td> 
     <button class="btn btn-null btn-xs" onclick="_remove(59, 'ID Fee')"> 
      <span class="fui-cross"></span> 
     </button> 
     <button class="btn btn-null btn-xs" onclick="_edit(59, 'ID Fee', '', '')"> 
      <span class="icon-pencil"></span> 
     </button> 
    </td> 
</tr> 

Was ich tun möchte, ist fügen Sie eine Daten-ID (und andere Daten) Attribut zu dem neu hinzugefügten tr-Tag (auf oder nach Zeile einfügen) und machen Sie es in etwa so:

<tr data-id="59" role="row" class="odd"> 

Ich habe es geschafft, den Index der neu hinzugefügten Reihe mit dem Code und es gibt den letzten Zeilenindex zu erhalten:

var i = table.row.add([ 
    '', 
    name, 
    target_l, 
    details, 
    panel.html()  
]).index(); 

und versuchte auch die folgenden hinzufügen die auszuführen Daten-id-Attribut mit dass Index:

var id = $("#department_id").val(); 
table.row(i).attr("data-id", id); 
// table.row(i).data("id", id); 
// I wanted to try this but there is also a method called data() already in 
// DataTables so it will not work like in JQuery. 

ich bin neu in Daten Tabellen und schon gescrollt seinen Quellcode, rot die Kommentare. Obwohl nicht gut zu verstehen, seine Funktionen, die mit _fn*() beginnt. Wenn es andere Wege gibt, ohne sich auf diese _fn*() Funktionen zu verlassen, danke!

+0

in Ihrem kommentierten Code, Sie sagen, Sie so etwas wie 'table.row (i) .data ("id", id) tun wollte; 'kann aber nicht, da DataTables eine Funktion' data' hat. Haben Sie versucht, 'table.row (i)' in eine jQuery-Funktion einzubinden und dann jQuerys 'data' darauf zu verwenden? –

+2

'table.row (i)' ist kein jquery-Objekt. Sie können nicht erwarten, dass die Daten oder Attr-Funktionen damit arbeiten. Sie müssten es zuerst in die jQuery-Funktion einfügen, bevor Sie die anderen Funktionen '$ (table.row (i)) verwenden können. Data (" id ", id);' – evolutionxbox

+0

Haben Sie das jemals gelöst, oder ist es das? immer noch ein offenes Thema? – davidkonrad

Antwort

9

Sie können rows().nodes() API-Funktion verwenden, finden Sie unter:

var i = table.row.add([ 
    '', 
    name, 
    target_l, 
    details, 
    panel.html()  
]).index(); 

var id = $("#department_id").val(); 
table.rows(i).nodes().to$().attr("data-id", id); 
+0

Nicht sicher warum, aber '.to $()' arbeitet nicht an '.node()' für mich. Hatte '$ (table.row (i) .node())' –

+1

@ FelipeLeão Danke für Ihren Kommentar Es scheint, dass 'to $()' nur mit 'nodes()' und nicht 'node()' funktioniert, was irgendwie undokumentiert ist. Ihre Abhilfe ist in Ordnung. –

+0

Was ist '.to $() '? – user3287550