Проблема обновления jQuery DataTables на стороне сервера, когда при обновлении получено меньше строк по сравнению с начальной загрузкой

Я использую bStateSave с bServerside в DataTables 1.9.4. Сначала я загружаю таблицу с 1000 строк и перехожу к последней странице с номерами строк от 951 до 1000. Затем при перезагрузке страницы с другим запросом, который имеет только 500 строк, из-за bStatesave значение iDisplayStart остается равным 950 и, таким образом, в таблице не отображаются данные, а в информационном разделе datatable написано: «Показано от 950 до 500 из 500 записей».

Это мой код инициализации.

var oTable = $('#sampleTable').dataTable({
"sScrollY":"500px",
"bProcessing":true,
"bServerSide":true,
"bStateSave":true,
"sDom":'Crtipl',
"sAjaxSource":"../test.htmlx",
"iDisplayLength":50,
"bPaginate":true,
"sPaginationType":"bootstrap",
"aoColumns": [
        {"mDataProp": "id"},
        {"mDataProp": function(source){
           return "<pre>"+source.description+"</pre>" 
        }},
        {"mDataProp": createdBy"} 
        ],
"fnRowCallback":function(nRow, aData, iDisplayIndex){
        $(nRow).on('click',$(nRow),function(){
        document.location.href="edit.htmlx"
        });
        }
 });

В идеале таблица должна быть либо на последней странице, показывающей от 451 до 500 записей, либо начинаться с 1-й страницы, показывающей от 1 до 50 записей. bStateSave должно быть равно true, чтобы сохранить информацию о сортировке столбцов при перезагрузке. Как решить эту проблему ?

Спасибо.


person darsheets    schedule 10.07.2013    source источник


Ответы (1)


В DataTables есть функции API, и из них fnDisplayStart()(http://datatables.net/plug-ins/api#fnDisplayStart) решит эту проблему. После инициализации мне просто нужно сделать вызов oTable.fnDisplayStart(0), и таблица будет указывать на 1-ю страницу.

person darsheets    schedule 12.07.2013