Число строк таблицы данных jquery на разных страницах - PullRequest
21 голосов
/ 13 июля 2010

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

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

Например, если в моей таблице есть 70 строк, и скажем, 50 из них отображаются на 1-й странице, а 20 на 2-й странице. Есть ли способ получить счет 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).

Ответы [ 5 ]

26 голосов
/ 13 июля 2010

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

$(document).ready(function() {

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

    // Get the length
    alert(oTable.fnGetData().length);
} );
12 голосов
/ 10 сентября 2015

РЕШЕНИЕ

Для таблиц данных 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 функция обратного вызова.

8 голосов
/ 08 августа 2011

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

dt.fnSettings()._iRecordsTotal;

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

$('#Table').dataTable({
    "fnDrawCallback": function (oSettings) {
        alert(oSettings._iRecordsTotal);
     }
});
0 голосов
/ 10 сентября 2015

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

$('#foo').dataTable().fnSettings().aiDisplay.length;
0 голосов
/ 24 июня 2015

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

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