2010-07-09 6 views
10

Comment puis-je ajouter une classe à la ligne que j'ajoute dans la datatable?Comment ajouter une classe à une nouvelle ligne dans une base de données jquery?

Si ce n'est pas possible, comment puis-je utiliser fnRowCallback ou fnDrawCallback pour changer 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"; 
    } 
}); 

Le code ci-dessus me donne une erreur.

Voilà comment j'ajouter la ligne:

oTable.fnAddData(arr); 
+0

doute que ça va vraiment aider, mais fait. J'ai essayé beaucoup d'autres choses, mais sans résultats. – Pierluc

+0

ou est-il un moyen que je peux simplement ajouter une ligne html, à la datatable via les fonctions de données – Pierluc

Répondre

-4

D'accord, peut-être je ne comprends pas exactement ce que votre question est, mais si vous venez ajouterez la ligne, pourquoi mettre pas la classe avant l'ajouter? Comme cela, un peu bâclée, par exemple:

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

Essayez de changer fnRowCallback à ce qui suit:

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

Vous pouvez vous référer au offical documentation pour comprendre davantage cette fonction de rappel.

+1

Meilleure solution que j'ai trouvé. Je voulais ajouter une classe à une colonne spécifique au lieu de la ligne. $ ($ (nRow) .children() [1]). Attr ('classe', 'indicateur de statut'); – rhigdon

4

Essayez ceci:

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

Pour ajouter la ligne à datatable essayer ce code 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

Vous pouvez ajouter le nom de classe dans vos données lui-même comme décrit dans la documentation.

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

utilisation DT_RowId pour ajouter id pour toute ligne
utilisation DT_RowClass pour ajouter la classe pour chaque rangée
utilisation DT_RowData pour ajouter des objets de données de html5 l'une quelconque rangée

par exemple, :

"données": [ {
"DT_RowId": "row_5",
"prenom": "Airi",
"last_name": "Satou",
"position": "comptable",
"bureau": « Tokyo »,
"date_début": "28 novembre 08",
"salaire": "162700 $"
}]

1

Cela devrait faire l'affaire:

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

Je ne sais pas pourquoi cela est down-voté, cela résout le problème (sauf qu'il ajoute CSS en ligne) Pour ajouter une classe en utilisant cette technique, il suffit de changer $ (r) .css en $ (r) .addClass ('class '); –

1

Documentation officielle dit:

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

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

S'il vous plaît lire: rows.add()

+0

Ce code est pour plusieurs rangs regarder mine pour une seule ligne. –

0

Après avoir lu la documentation ce travail pour moi:

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