Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JQuery Datatable - Placing a custom loading GIF instead of default "Processing" text

I'm using the current version of JQuery Datatable. I have implemented server-side processing. Is there any way to place our own Loading GIF instead of the dafault text "Processing"?

Here's my HTML code :

<table id="table" class="table table-striped table-bordered table-hover display nowrap" cellspacing="0" width="100%">
  <thead>
    <tr bgcolor="#76b900">
      <th> Request #</th>
      <th>Description</th>
      <th>Created By</th>
    </tr>
  </thead>
</table>

Here's my JS code :

$('#table').DataTable({
    "dom": '<"top"lB>rt<"bottom"ip>', // DataTable element position


    "lengthMenu": [
      [10, 25, 50, 100, 500],
      [10, 25, 50, 100, 500]
    ], // page length options
    "pageLength": 25, // default page length
    "pagingType": "full_numbers", // pagination related buttons

    "ordering": true,
    "order": [
      [0, "desc"]
    ],

    "scrollX": true, // enables horizontal scrolling      
    "filter": true,
    "responsive": true,
    "serverSide": true,
    "info": true, // control table information display field
    "processing": true,
    "stateSave": true, //restore table state on page reload,

    "ajax": {
      "url": Helper.baseUrl() + "Search/LoadData",
      "type": "POST",
      "datatype": "json",
      "data": function(d) {
        d.searchParams = searchFilters();
      },
    },

    "columns": //Binds values fetched from the database to their respective columns
      [{
      "data": "RequestNo",


    }, {
      "data": "Description"
    }, {
      "data": "CreatedBy"
    }],
  });

UPDATE

This is my updated JS code for Processing :

"language": {
            "infoFiltered":"",
            "processing": "<img src='~/Content/images/loadingNew.gif' />"
        },

This didn't work. Am I including the path in wrong technique?

like image 266
Mr.Human Avatar asked Jan 01 '17 10:01

Mr.Human


3 Answers

Just in case if someone wants to have fontawesome icon in that place the following can be used:

"language": 
{          
"processing": "<i class='fa fa-refresh fa-spin'></i>",
}
like image 88
MR_AMDEV Avatar answered Nov 05 '22 01:11

MR_AMDEV


Take a look at this DEMO I have made.

  var table = $('#changeLogTable').DataTable({
        "bLengthChange": false,
        "bPaginate": true,
        "bInfo": false,
        "autoWidth": false, 
        "order": [[0, "desc"]],
        "processing": true,
        "serverSide": true,
        "sAjaxSource": "data.js",
         oLanguage: {sProcessing: "<div id='loader'></div>"}
    }); 

})

like image 9
Offir Avatar answered Nov 04 '22 23:11

Offir


SOLVED :-

Initially I had included path in a wrong manner.
Using @Offir Pe'er answer I got it working (with the only modification currently in my code is that I've used current version i.e. 1.10 syntax).

This is how my code looks now :-

"language": 
{          
"processing": "<img style='width:50px; height:50px;' src='Content/images/loadingNew.gif' />",
}

So I just had to remove the '~' from my previously updated code.

Here's my directory structure :

-Root Folder

  • Content

    • Images

      • loadingNew.gif
  • Scripts

    • MyJSFile.js
like image 3
Mr.Human Avatar answered Nov 05 '22 01:11

Mr.Human