Search code examples
javascriptjquerydatatables

How to reload/refresh jQuery dataTable?


I am trying to implement functionality whereby clicking a button on the screen will cause my jQuery dataTable to refresh (as the server-side data source may have changed since the dataTable was created).

Here's what I have:

$(document).ready(function() {
    $("#my-button").click(function() {
        $("#my-datatable").dataTable().fnReloadAjax();
    });
});

But when I run this, it does nothing. What's the proper way to refresh the dataTable when the button is clicked?


Solution

  • You can try the following:

    function InitOverviewDataTable() {
        oOverviewTable = $('#HelpdeskOverview').dataTable({
            "bPaginate": true,
            "bJQueryUI": true, // ThemeRoller-stöd
            "bLengthChange": false,
            "bFilter": false,
            "bSort": false,
            "bInfo": true,
            "bAutoWidth": true,
            "bProcessing": true,
            "iDisplayLength": 10,
            "sAjaxSource": '/Helpdesk/ActiveCases/noacceptancetest'
        });
    }
    
    function RefreshTable(tableId, urlData) {
        $.getJSON(urlData, null, function(json) {
            table = $(tableId).dataTable();
            oSettings = table.fnSettings();
    
            table.fnClearTable(this);
    
            for (var i = 0; i < json.aaData.length; i++) {
                table.oApi._fnAddData(oSettings, json.aaData[i]);
            }
    
            oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
            table.fnDraw();
        });
    }
    // Edited by Prasad
    function AutoReload() {
        RefreshTable('#HelpdeskOverview', '/Helpdesk/ActiveCases/noacceptancetest');
    
        setTimeout(function() {
            AutoReload();
        }, 30000);
    }
    
    $(document).ready(function() {
        InitOverviewDataTable();
        setTimeout(function() {
            AutoReload();
        }, 30000);
    });
    

    http://www.meadow.se/wordpress/?p=536