Как добавить класс в новую строку в таблицах данных jquery? - PullRequest
10 голосов
/ 09 июля 2010

Как добавить класс в строку, которую я добавляю в таблицу данных?

Если это невозможно, как я могу использовать fnRowCallback или 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";
  }
});

Приведенный выше код дает мне ошибку.

вот как я добавляю строку:

oTable.fnAddData(arr);

Ответы [ 8 ]

19 голосов
/ 05 января 2011

Попробуйте изменить fnRowCallback на следующее:

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

Вы можете обратиться к официальной документации , чтобы лучше понять эту функцию обратного вызова.

9 голосов
/ 13 октября 2014

Вы можете добавить имя класса в свои данные, как описано в документации.

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

используйте DT_RowId для добавления идентификатора для любой строки
используйте DT_RowClass для добавления класса для любой строки
используйте DT_RowData для добавления объекта данных html5 в любую строку

Например:

«данные»: [ {
"DT_RowId" : "row_5",
"first_name": "Airi",
"last_name": "Satou",
"должность": "Бухгалтер",
"офис": "Токио",
"start_date": "28 ноября 08",
"зарплата": "162 700 долларов"
}] * 1 018 *

4 голосов
/ 07 января 2011

Попробуйте это:

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

Чтобы добавить строку в таблицу данных, попробуйте следующий код:

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 голосов
/ 14 июня 2016

Официальная документация гласит:

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

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

Пожалуйста, прочитайте: rows.add ()

2 голосов
/ 19 июля 2013
$(document).ready(function() {
    oTable = $('#table_id').dataTable( {"fnInitComplete": after_init} );
} );
function after_init(){
    $("#table_id tbody tr").addClass("gradeA");
}
1 голос
/ 04 октября 2016

После прочтения документации эта работа для меня:

var my_dataTable = $('#my-table').DataTable();
my_dataTable.row.add( [
                'Hello',
                'Hello2',
                'Hello3',
                'Hello4'
            ] ).draw().nodes().to$().addClass("my_class");
1 голос
/ 21 августа 2015

Это должно сработать:

var r = t.row.add( [
    ....
] ).node();
$(r).css({"color":"red"});
0 голосов
/ 09 июля 2010

Хорошо, возможно, я не совсем понимаю, в чем ваш вопрос, но если вы просто добавляли строку, почему бы не установить класс, прежде чем добавить его? Вот такой, немного небрежный пример:

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