Как сделать нумерацию строк в datatables jquery server-side?

Добрый день! Необходимо, чтобы строки нумеровались с первой и далее. Использую datatables 1.10. Вот кусок с сервера:
$columns = array(
	array( 'db' => 'id', 'dt' => 'id' ),
	array( 'db' => 'card_number', 'dt' => 'card_number' ),
	
	array(
		'db'        => 'time_add',
		'dt'        => 'date_add',
		'formatter' => function( $d, $row ) {
			return date( 'd.m.Y', $d);
		}
	),
	array('db' => 'username',	'dt' => 'expert'),
	array(
		'db'        => 'id',
		'dt'        => 'actions',
		'formatter' => function( $d, $row ) {
			return "<a href=\"$d\">Удалить</a>";
		}
	)
	
);

вот кусок вывода
$(document).ready(function() {
	 $('#example').dataTable( {
		"aaSorting": [],
		"fnDrawCallback": function ( oSettings ) {
			/* Need to redo the counters if filtered or sorted */
			if ( oSettings.bSorted || oSettings.bFiltered ) {
				for ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ ) {
				this.fnUpdate( i+1, oSettings.aiDisplay[i], 0, false, false );
				}
			}
			},
		"aoColumnDefs": [
			{ "bSortable": false, "sClass": "index", "aTargets": [ 0 ] }
		],
		"processing": true,
		"serverSide": true,
		"ajax": "scripts/objects.php",
		"columns": [
			{ "data": "id" },
			{ "data": "card_number" },
			{ "data": "date_add" },
			{ "data": "expert" },
			{ "data": "actions" }
			
			
		]
	} );
} );

Если выводить таблицу готовую не с помощью пхп, то всё ок. Нумеруется, и после того, как тыкаю в пагинацию, нумерация продолжается. Если делаю с помощью сервера вывод, то на первой странице таблицы нумерация нормально, как только нажимаю вторую - вижу в колонке id - не номер на странице а ид из базы. Может, как-то на пхп готовить номер строки и отправлять? Подскажите, пожалуйста.
P.S. Библиотеку для соединения с базой использую стандартную из datatable.
P.S. Если делать так
"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
                    var index = (iDisplayIndexFull + 1);
                    $("td:first", nRow).html(index);
                    return nRow;
		},

то нумерация получается на каждой странице от одного до 10
  • Вопрос задан
  • 4114 просмотров
Пригласить эксперта
Ответы на вопрос 2
ghaiklor
@ghaiklor
NodeJS TechLead
Не отдавайте нумерацию с сервера. Делайте ее только на клиенте. DataTables же это вроде и может делать.
Ответ написан
Для нумерации строк в одном из проектов использовали примерно такой код:

"fnRowCallback": function(oSettings) {
            var table = $('#example').dataTable(), // получаем таблицу
                  rows = table.fnGetNodes(); // получаем все строки, а не только на текущей страниц
                           
            $(rows).each(function () {
                $(this).find('td:first').text(this._DT_RowIndex + 1);
            });
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы