Подтвердить что ты не робот

Количество строк в jquery datatables среди страниц

Я использую плагин jQuery DataTables для моей таблицы HTML.

Есть ли способ получить число строк из числа строк в моей таблице на страницах.

Например, если у меня есть строки 70 в моей таблице и пусть 50 из них отображаются на первой странице и 20 на второй странице. Есть ли способ получить счетчик 70?

Я пробовал все предложения, включенные в этот пост: jQuery: количество строк в таблице

Это включает в себя:

var rowCount = $('#myTable tr').length;
var rowCount = $('#myTable tr').size();
var rowCount = $('#myTable >tbody >tr').length;
var rowCount = $("#myTable").attr('rows').length;

Но все приведенные выше предложения, похоже, возвращают количество строк на существующей странице (в данном случае 50, а не 70).

4b9b3361

Ответ 1

Похоже, что DataTables удаляет строки, которые не находятся на текущей странице из DOM, поэтому вы не сможете подсчитать их с помощью селектора jQuery. Вам нужно будет использовать API DataTables, в частности функцию fnGetData:

$(document).ready(function() {

    // Initialize your table
    var oTable = $('#myTable').dataTable();

    // Get the length
    alert(oTable.fnGetData().length);
} );

Ответ 2

При использовании подкачки на стороне сервера вы можете получить доступ к общему количеству записей, например...

dt.fnSettings()._iRecordsTotal;

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

$('#Table').dataTable({
    "fnDrawCallback": function (oSettings) {
        alert(oSettings._iRecordsTotal);
     }
});

Ответ 3

РЕШЕНИЕ

Для DataTables 1.10

Используйте page.info(), чтобы получить информацию о таблице, как показано ниже.

Свойство recordsTotal будет содержать общее количество записей в таблице.

var table = $('#example').DataTable({
    "initComplete": function(settings, json){ 
        var info = this.api().page.info();
        console.log('Total records', info.recordsTotal);
        console.log('Displayed records', info.recordsDisplay);
    }
});

DEMO

Смотрите этот jsFiddle для кода и демонстрации.

Примечания

Это решение будет работать как для клиентских, так и для серверных режимов обработки, если вы используете page.info() после того, как данные были извлекается, например, в initComplete функция обратного вызова.

Ответ 4

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

$('#foo').dataTable().fnSettings().aiDisplay.length;

Ответ 5

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