2016-04-11 2 views
1

Я создаю строку таблицы с помощьюКак выделить последнюю строку таблицы в DataTables

mytable.row.add(getTableRow(data.report)).draw(); 


function getTableRow(report) { 
    var id = report.id; 
    var date = report.create_date; 
    return [ 
     "<a href=\"/date/" + id + "\">" + date + "</a>", 
     user 
    ]; 
} 

Как я могу выделить строку таблицы, как только я сделать это?

Вот моя структура таблицы

 <table class="table-bordered" id="mytableid" cellspacing="0" width="100%"> 
     <thead> 
      <tr> 
       <th width="20%">Date</th> 
       <th width="20%">User</th> 
      </tr> 
     </thead> 
     <tbody> 
      <td> 
      <i class="fa fa-spinner fa-spin"></i> 
      <span> </span> 
      Loading... 
      </td> 
      <td></td> 
      <td></td> 
     </tbody> 
    </table> 

Благодаря

ответ

1

Я думаю, что у меня есть более приятное решение. Воспользуйтесь DataTables to$() метода, который заставит вас работать на внутренних узлах в качестве объектов Jquery и использовать яваскрипт with заявления и добавить .newRow класс и draw() новую строка:

with (mytable.row.add(getTableRow(data.report))) { 
    nodes().to$().addClass('newRow') 
    draw() 
} 

демо ->http://jsfiddle.net/hzvskp77/

1

Попробуйте

$('#yourTableId tr.highlight').removeClass('highlight'); //remove any pre existing class 
$('#yourTableId tr a.latest').removeClass('latest'); //remove class from any exiting anchor tag 

mytable.row.add(getTableRow(data.report)).draw(); 

$('#yourTableId tr a.latest').closest('tr').addClass('highlight'); 

function getTableRow(report) { 
    var id = report.id; 
    var date = report.create_date; 
    return [ 
     "<a href=\"/date/" + id + "\" class="latest">" + date + "</a>", 
     user 
    ]; 
} 

также это правило CSS

tr.highlight td{ 
background-color: yellow; 
color:black; 
} 

Идея заключается в том, чтобы установить класс к якорный тег сказать latest, и как только таблица будет перерисована, найдите этот тег привязки с этим классом, а затем перейдите к его «tr» и добавьте класс под названием highlight. Для этого класса мы имеем CSS, который изменит внешний вид этого tr.


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

$('#myTable ').dataTable({ 
    // other stuff 
    "drawCallback": function(settings) { 
     $('#myTable tr a.latest').closest('tr').addClass('highlight'); 
    } 
}); 
+0

Я пробовал это с вашим css, но он не работал' $ ('# myTable tr.highlight'). RemoveClass ('highlight'); \t \t \t \t $ ('# myTable tr a.latest'). RemoveClass ('latest'); \t \t \t \t myTable.row.add (getTableRow (data.report)). Draw(); \t \t \t \t $ ('# myTable tr a.latest'). Ближайший ('tr'). AddClass ('highlight'); 'with' function getTableRow (отчет) { \t var id = report.id; \t var date = report.create_date; \t возвращение [ \t \t "" + date + "", \t \t пользователь \t]; ' – aaj

+0

@lovesoftlayeraj обновил свой ответ. есть чек, вам нужно добавить этот 'drawCallback' при инициализации плагина datatables. –

+0

Проблема: я уже инициализировал таблицу данных при загрузке страницы. (Я попробовал добавить туда свою функцию). а затем, когда я создаю строку, я просто делаю 'myTable.row.add (getTableRow (data.report)). draw();' и затем не возвращается к функции datatable initialisation. – aaj

Смежные вопросы