cant preserve pagination with continual refresh

cant preserve pagination with continual refresh

kittleskittles Posts: 6Questions: 0Answers: 0
edited February 2012 in General
I update a table with an ajax call repeatedly, but the pagination jumps back to 1 every time the ajax callback fires. This may be deliberate for cases where you were on page 5, and the new data means there is no page 5 anymore, but I was wondering how I could adjust the behavior to either handle this case (maybe go to last page), or at the very least, stop the pagination from going back to 1 with each refresh (and occasionally crash everything)

Here is my code:
[code]
var tableSettings = {
"bStateSave":true,
"sDom": "t",
"sPaginationType": "bootstrap",
"oLanguage": {
"sLengthMenu": "_MENU_ records per page"
},
"aoColumns": [
{"sType":"html"},
{"sType":"numeric"},
{"sType":"string"},
{"sType":"string"},
{"sType":"date"},
{"sType":"numeric", "bVisible":false},
{"sType":"numeric", "iDataSort": 5},
{"sType":"string"}
],
"bAutoWidth":false,
};
var oTable = $('#example').dataTable(tableSettings);
oTable.fnReloadAjax('/get_data');
var refreshId = setInterval(function() {
oTable.fnReloadAjax('/get_data', null, true);
oTable.fnDraw();
}, 1000);
} );
[/code]

Thanks for everything Allan (and anyone else who has contributed)!

Replies

  • allanallan Posts: 34,034Questions: 1Answers: 3,332 Site admin
    I think this is probably as simple as removing line 24 in the above code block - fnReloadAjax will do a draw for you (a standing redraw as you have it setup), while fnDraw will do a complete redraw, including a full sort and filter - hence resetting the paging.

    Allan
  • kittleskittles Posts: 6Questions: 0Answers: 0
    Hey Allan- thanks for responding. I tried removing line 24, but pagination is still a problem. My full table initialization code is here (http://hastebin.com/dabejewoco.coffee) if you are curious. I'll continue to bang around on things :)
  • the3rdbitthe3rdbit Posts: 8Questions: 0Answers: 0
    edited June 2012
    I just found the solution for the problem. If kittles doesn't need it anymore, at least for the documentation.

    Function to be set before the DataTable initialisation:
    [code]
    $.fn.dataTableExt.oApi.fnStandingRedraw = function(oSettings) {
    if(oSettings.oFeatures.bServerSide === false){
    var before = oSettings._iDisplayStart;

    oSettings.oApi._fnReDraw(oSettings);

    // iDisplayStart has been reset to zero - so lets change it back
    oSettings._iDisplayStart = before;
    oSettings.oApi._fnCalculateEnd(oSettings);
    }

    // draw the 'current' page
    oSettings.oApi._fnDraw(oSettings);
    };
    [/code]

    Refresh the table content:
    [code]
    $(document).ready(function() {
    var oTable = $('.dataTable').dataTable()
    oTable.fnStandingRedraw();
    } );
    [/code]


    Copied this code from here:
    http://datatables.net/plug-ins/api
This discussion has been closed.