Количество строк в 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
).
Ответы
Ответ 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" как количество записей в таблице данных.