2010-07-09 12 views
10

¿Cómo puedo agregar una clase a la fila que estoy agregando en la tabla de datos?¿Cómo agregar una clase a una nueva fila en tablas de datos jquery?

Si no es posible, ¿cómo puedo usar fnRowCallback o fnDrawCallback para cambiar la clase?

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

El código anterior es que me da un error.

Éste es cómo añadir la fila:

oTable.fnAddData(arr); 
+0

duda de que realmente va a ayudar, pero hecho. He intentado muchas otras cosas, pero sin resultados. – Pierluc

+0

o hay una manera en que puedo simplemente agregar una fila html, a la tabla de datos a través de las funciones de datatables – Pierluc

Respuesta

-4

Muy bien, tal vez no voy a entender exactamente cuál es tu pregunta, pero si se acaba de añadir la fila, por qué no definen la clase antes agregarlo? De esta manera, un tanto descuidado, ejemplo:

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

trate de cambiar su fnRowCallback a lo siguiente:

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

Se puede hacer referencia a la offical documentation para comprender aún más esta función de devolución de llamada.

+1

La mejor solución que encontré. Quería agregar una clase a una columna específica en lugar de la fila. $ ($ (nRow) .children() [1]). Attr ('clase', 'estado-indicador'); – rhigdon

4

Prueba esto:

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

Para añadir fila de tabla de datos tratar este código de:

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

Usted puede añadir el nombre de la clase en su propios datos como se describe en la documentación.

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

uso DT_RowId para añadir ID para cualquier fila
uso DT_RowClass para añadir clase para cualquier fila
uso DT_RowData para añadir objeto de datos html5 a cualquier fila

por ejemplo, :

"datos": [ {
"DT_RowId": "row_5",
"nombre apellido": "Airi",
"apellidos": "Sato",
"posición": "Contador",
"oficina": "Tokio ",
"fecha_inicial": "28vo Nov 08",
"salario": "$ 162.700"
}]

1

Esto debería hacer el truco:

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

No sé por qué se votó negativamente, esto resuelve el problema (excepto que se está agregando CSS en línea) Para agregar una clase con esta técnica, simplemente cambie $ (r) .css a $ (r) .addClass ('clase '); –

1

documentación oficial dice:

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

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

favor, lea: rows.add()

+0

Este código es para ver varias filas en el mío para una sola fila. –

0

Después de leer la documentación de este trabajo para mí:

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