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

JQuery DataTables.NET Server Side Pagination Issues

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

Это, конечно, вызвало уродливую голову, так как пользователи начинают видеть долгое время script ошибки в IE. Это, в сочетании с огромным объемом объема данных, делает веб-страницы практически бесполезными.

Ускорьтесь на мои попытки исправить это, и они прошли довольно хорошо. Сайт представляет собой сайт .NET MVC 2, который был разработан с использованием DataTables для добавления функций поиска/сортировки/подкачки на клиенте. Я только что завершил аналогичную задачу, используя jqGrid, поэтому понял, что это будет относительно прямолинейно. И это была только одна небольшая проблема. Я не могу за свою жизнь получать ссылки на страницы.

Быстрый просмотр результатов:

Результаты показывают, что в этом запросе есть 2086 записей:

enter image description here

Но пейджинговые ссылки не генерируются.

enter image description here

Мой метод действия возвращает JSON через

return Json(new
              {
                 param.sEcho,
                 iTotalRecords = totalRecords,
                 iTotalDisplayRecords = filteredContracts.Count(),
                 aaData = result
              },
           JsonRequestBehavior.AllowGet);

где

param.sEcho = "1", iTotalRecords = 2086, iTotalDisplayRecords = 25, и aaData - результат массива данных для отображения

Чтобы быть исчерпывающим, он выполняет операцию инициализации данных:

    $("#tblToDoItems").dataTable({
        'bServerSide': true,
        'bProcessing': true,
        'sAjaxSource': '/Home/GetContractList',
        "bJQueryUI": true,
        "bAutoWidth": false,
        "bPaginate": true,
        "sPaginationType": "full_numbers",
        "iDisplayLength": 25,
    /* make the first and last columns not sortable */
        "aoColumnDefs": [
            { "bSortable": false, "aTargets": [0, -1] }
        ]
    });

Я пропустил некоторые настройки, которые помешали бы DataTables правильно генерировать разбиение на страницы с помощью восстановления данных на стороне сервера?

4b9b3361

Ответ 1

Ваши iTotalDisplayRecords равны 25, поэтому данные о том, что на стороне сервера только 25 контрактов, а вторая страница не нужна, потому что все они уже показаны на текущей странице. Это ошибка comon - если вы посмотрите на учебник JQuery MVC. Реализация серверного подкачки вы увидите, что есть три числа:

  • iTotalRecords = allCompanies.Count(), представляющий все записи в базе данных (в вашем случае 2086)
  • iTotalDisplayRecords = filtCompanies.Count(), представляющий число записей, соответствующих текущему условию поиска. Если вы не использовали фильтрацию, это число должно быть таким же, как iTotalRecords 2086, но в вашем случае это 25.
  • result.Count - это 25. Это число не передается в ответе JSON, потому что DataTables уже знает, что на странице должно быть 25 записей.

Если вы поместите all.Count вместо результата. Войдите в iTotalDisplayRecords. В DataTables будет отображаться пейджинг. iTotalDisplayRecords и iTotalRecords используются для отображения сообщения "Отображение от 1 до 25 из iTotalDisplayRecords (всего в iTotalRecords)"

Если iTotalDisplayRecords равно 25, в DataTables будет показано сообщение "Отображение от 1 до 25 из 25 (Всего iTotalRecords)" и предположим, что нет страницы 2; следовательно, пейджинг будет отключен, как в вашем примере.

Йован