2014-11-05 13 views
8

dynamicznie dodać nowy wiersz na DataTables 1.10.2 wykorzystaniem metody table.row.add() przy użyciu tego kodu:dane wprowadzone na rzędzie dodać na DataTables 1.10

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

wyprodukowałem tę znaczników:

<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> 

Co chcę zrobić, to dodać identyfikator danych (i innych danych) atrybut nowo dodanego znacznika tr (wstawienia wiersza lub po) i uczynić go mniej więcej tak:

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

udało mi się dostać indeks nowo dodanego wiersza przy użyciu kodu i to zwraca ostatni indeks wiersza:

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

I również próbował wykonać następujące czynności, aby dodać atrybut data-id użyciu że 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. 

Jestem nowy danych Tabele i już przewijany kod źródłowy, czerwone komentarze. Choć nie jest dobry w rozumieniu jego funkcji, zaczyna się od _fn*(). Jeśli jest jakakolwiek inna metoda bez polegania na tych funkcjach _fn*(), dziękuję!

+0

skomentował w swoim kodzie, mówisz, że chciał zrobić coś takiego 'table.row (i) .data ("id", id); 'ale nie może, ponieważ DataTables ma funkcję' data'. Czy próbowałeś owijać 'table.row (i)' w funkcji jQuery, a następnie wywoływać 'dane' jQuery? –

+2

'table.row (i)' nie jest obiektem jquery. Nie można oczekiwać, że funkcje danych lub funkcji attr będą z nim pracować. Będziesz musiał najpierw zawinąć go w funkcję jQuery, zanim będziesz mógł korzystać z innych funkcji '$ (table.row (i)). Data (" id ", id);' – evolutionxbox

+0

Czy kiedykolwiek to rozwiązałeś lub nadal otwarty problem? – davidkonrad

Odpowiedz

9

rows().nodes() można użyć funkcji API, patrz poniżej:

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

Nie wiem dlaczego, ale '.to $()' nie działa na '.node()' dla mnie. Musiałem użyć '$ (table.row (i) .node())' –

+1

@ FelipeLeão , dziękuję za komentarz.Okazuje się, że 'do $()' działa tylko z 'nodes()', a nie 'node()', które jest rodzaju nieudokumentowane.Twoje obejście jest w porządku. –

+0

co to jest '.to $() '? – user3287550