2010-07-09 10 views
10

Come posso aggiungere una classe alla riga che sto aggiungendo nel datatable?Come aggiungere una classe a una nuova riga in un data jquery?

Se non possibile, come è possibile utilizzare fnRowCallback o fnDrawCallback per modificare la classe?

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"; 
    } 
}); 

Il codice sopra riportato mi sta dando un errore.

questo è come aggiungo la riga:

oTable.fnAddData(arr); 
+0

dubbio che sarà di grande aiuto, ma fatto. Ho provato molte altre cose, ma senza risultati. – Pierluc

+0

o c'è un modo posso semplicemente aggiungere una riga html, al datatable tramite le funzioni di datatables – Pierluc

risposta

-4

Va bene, forse non sto capendo esattamente ciò che la tua domanda è, ma se si fosse semplicemente aggiungendo la riga, perché non impostare la classe prima di aggiungilo? In questo modo, un po 'sciatta, ad esempio:

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

provare a modificare le fnRowCallback al seguente:

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

È possibile fare riferimento al offical documentation per comprendere ulteriormente questa funzione di callback.

+1

La migliore soluzione che ho trovato. Volevo aggiungere una classe a una colonna specifica invece della riga. $ ($ (nRow) .children() [1]). Attr ('classe', 'indicatore di stato'); – rhigdon

4

Prova questo:

"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; 
} 

Per aggiungere fila per DataTable provare questo codice:

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

È possibile aggiungere il nome di classe nel vostro dati stessi come descritto nella documentazione.

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

uso DT_RowId per l'aggiunta di id per ogni riga
uso DT_RowClass per l'aggiunta di classe per ogni riga
uso DT_RowData per l'aggiunta di oggetto dati html5 a qualsiasi riga

es :

"dati": [ {
"DT_RowId": "row_5",
"first_name": "Airi",
"cognome": "Satou",
"posizione": "Ragioniere",
"ufficio": "Tokyo ",
"START_DATE": "28 novembre 08",
"salario": "$ 162.700"
}]

1

Questo dovrebbe fare il trucco:

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

Non so perché questo è down-votato, questo risolve il problema (eccetto che aggiunge CSS in linea) Per aggiungere una classe usando questa tecnica basta cambiare $ (r) .css in $ (r) .addClass ('classe '); –

1

documentazione ufficiale dice:

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

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

Si prega di leggere: rows.add()

+0

Questo codice è per più righe guarda il mio per singola riga. –

0

Dopo aver letto la documentazione questo lavoro per me:

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