Почему пейджинг Datatables с использованием AjaxSource и MVC возвращает только одну страницу? - PullRequest
2 голосов
/ 22 июля 2011

Попытка создания страницы элемента управления JQuery DataTables с помощью AjaxSource, указывающего на действие в моем контроллере.Я не могу заставить элемент управления подкачкой datatables отображать более одной страницы, несмотря на то, что работают вызов ajax и сам datatable.Использование DataTables 1.8.1., JQuery 1.4.1, MVC2

. Чтобы продемонстрировать проблему, я создал список строковых массивов,

var data = new List<string[]>() {
                new string[] {"1", "a1", "a2", "a3"},
                new string[] {"2", "b1", "b2", "b3"},
                new string[] {"3", "c1", "c2", "c3"},
                ...
                ...
                new string[] {"39", "c1", "c2", "c3"},
                new string[] {"40", "a1", "a2", "a3"}                  
        };

Я пролистываю список и возвращаю его из моего контроллера.

 var pagedData = data.Skip(param.iDisplayStart*param.iDisplayLength)
                     .Take(param.iDisplayLength);

        return Json(new
        {
            sEcho = param.sEcho,
            iTotalRecords = data.Count,
            iTotalDisplayRecords = pagedData.Count(),
            aaData = pagedData
        },
        JsonRequestBehavior.AllowGet);

Мой DataTable создается с помощью

    $(document).ready(function ()
    {

        $('#myDataTable').dataTable({
            "bServerSide": true,
            "sAjaxSource": "../ApplicationLog/AjaxHandler",
            "bProcessing": true,
            "sPaginationType": "full_numbers",
            "aoColumns": [
                    { "sName": "COLONE" },
                    { "sName": "COLTWO" },
                    { "sName": "COLTHREE" },
                    { "sName": "COLFOUR" }
                ]
        });
    });

Этот Ajax-вызов вызывает Action и публикует первые 10 строк в моей таблице, которая сообщает, что она «Показывает от 1 до 10 из 10».записей (отфильтровано из 40 записей).

У меня проблема с пейджером в таблице данных, который отображает только кнопки

«Первый», «Предыдущий», «1», «Далее», «Последний»

Хотя у меня есть четыре страницы данных, чтобы показать.Если я нажимаю «Первый», «Предыдущий», «Следующий» или «Последний», мое действие не вызывается.

Я что-то упускаю из виду?Любая помощь будет оценена.

Заранее спасибо, Бен

1 Ответ

3 голосов
/ 23 июля 2011

У меня была эта проблема в прошлом. Попробуйте установить

iTotalDisplayRecords = data.Count()

Я думаю, что он использует iTotalDisplayRecords, чтобы проверить что-то вроде "из отфильтрованных записей есть еще страницы на"

В этом случае вы сообщаете таблицы данных "Мой поиск дал 10 записей, всего 40, но я хочу показать только 10 в отфильтрованном результате"

Таким образом, поскольку datatables считает, что нужно отобразить только 10 отфильтрованных строк, и вы отображаете эти 10 на этой странице, он не думает, что ему нужно выполнять какую-либо подкачку страниц.

...