DataTables logo DataTables

cant preserve pagination with continual refresh
  • 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:
                var tableSettings = {
                    "bStateSave":true,
                    "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
                    "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);
            } );
    

    Thanks for everything Allan (and anyone else who has contributed)!
  • 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
  • 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 :)
  • 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:
    $.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);
    };
    

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


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

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Support

Get useful and friendly help straight from the source.