2010-07-09 9 views
10

Jak dodać klasę do wiersza, który dodaję do datatable?Jak dodać klasę do nowego wiersza w datowables jquery?

Jeśli nie jest możliwe, jak mogę zmienić klasę za pomocą fnRowCallback lub fnDrawCallback?

oTable = $('#example').dataTable({ 
    "bJQueryUI": true, 
    "bSortClasses": false, 
    "sDom":'T<"clear">', 
    "sPaginationType": "full_numbers", 
    "sDom": 'T<"clear"><"fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix"lfr>t<"fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"ip>', 
    "fnRowCallback": function(nRow, aData, iDisplayIndex) { 

    var oSettings = oTable.fnSettings(); 
    oSettings.aoData[iDisplayIndex].nTr.className = "gradeX odd"; 
    } 
}); 

Powyższy kod daje błąd.

to w jaki sposób mogę dodać wiersz:

oTable.fnAddData(arr); 
+0

wątpię, to naprawdę pomaga, ale zrobić. Próbowałem wielu innych rzeczy, ale bez rezultatów. – Pierluc

+0

lub czy istnieje sposób, aby po prostu dodać wiersz html, do datatable za pomocą funkcji datatables – Pierluc

Odpowiedz

-4

porządku, może nie mam zrozumienia dokładnie to, co jest Twoje pytanie, ale jeśli po prostu dodając wiersz, to dlaczego nie wybrać klasę przed wami dodaj to? Tak, nieco zaniedbany, przykład:

jQuery("<tr />") 
    .html(your_var_containing_the_interior_dom) 
    .addClass("yourClass") 
    .appendTo(jQuery("#yourTable")) 
19

Spróbuj zmienić fnRowCallback na następujące kwestie:

"fnRowCallback": function(nRow, aData, iDisplayIndex) { 
    nRow.className = "gradeX odd"; 
    return nRow; 
} 

Można odwołać się do offical documentation dalszego zrozumienia tej funkcji zwrotnej.

+1

Najlepsze rozwiązanie znalazłem. Chciałem dodać klasę do konkretnej kolumny zamiast do wiersza. $ ($ (nRow) .children() [1]). Attr ("klasa", "wskaźnik stanu"); – rhigdon

4

Spróbuj tego:

"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { 
      var id = aData[0]; 
      $(nRow).attr("id",id); 
      if (jQuery.inArray(aData[0], gaiSelected) != -1) 
      { 
       $(nRow).addClass('row_selected'); 
      } 
      return nRow; 
} 

Aby dodać wiersz do DataTable wypróbować ten kod:

http://datatables.net/examples/api/add_row.html

/* Global var for counter */ 
var giCount = 1; 

$(document).ready(function() { 
    $('#example').dataTable(); 
}); 

function fnClickAddRow() { 
    $('#example').dataTable().fnAddData([ 
     giCount+".1", 
     giCount+".2", 
     giCount+".3", 
     giCount+".4" ]); 

    giCount++; 
} 
2
$(document).ready(function() { 
    oTable = $('#table_id').dataTable({"fnInitComplete": after_init}); 
}); 
function after_init(){ 
    $("#table_id tbody tr").addClass("gradeA"); 
} 
9

Możesz dodać nazwę klasy w danych sama jak opisano w dokumentacji.

http://www.datatables.net/examples/server_side/ids.html

zastosowanie DT_RowId dodawania identyfikatora dla każdego wiersza
stosowania DT_RowClass dodawania klasę dla każdego wiersza
stosowania DT_RowData przez dodanie obiektu danych HTML5 każdym rzędzie

np :

"data": [ {
"DT_RowId" "row_5"
"first_name": "Airi"
"last_name": "Satou"
"stanowisko": "Księgowy",
"urząd": „Tokio ”
"data_początkowa": "28 listopada 08",
"wynagrodzenie": "$ +162.700"
}]

1

To powinno załatwić sprawę:

var r = t.row.add([ 
    .... 
]).node(); 
$(r).css({"color":"red"}); 
+0

Nie wiem, dlaczego to jest przegłosowane, to rozwiązuje problem (z wyjątkiem dodawania wbudowanego CSS). Aby dodać klasę za pomocą tej techniki, po prostu zmień $ (r) .css na $ (r) .addClass (klasa "); –

1

Oficjalna dokumentacja mówi:

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

table 
    .rows.add([ 
     new Pupil(43), 
     new Pupil(67), 
     new Pupil(102) 
    ]) 
    .draw() 
    .nodes() 
    .to$() 
    .addClass('new'); 

Proszę przeczytać: rows.add()

+0

Ten kod służy do wyświetlania wielu wierszy w kopalni dla pojedynczego wiersza. –

0

Po przeczytaniu dokumentacji tej pracy dla mnie:

var my_dataTable = $('#my-table').DataTable(); 
my_dataTable.row.add([ 
       'Hello', 
       'Hello2', 
       'Hello3', 
       'Hello4' 
      ]).draw().nodes().to$().addClass("my_class"); 
Powiązane problemy