简体   繁体   中英

Unable to load server side data using Scroller Extension jQuery Datatable

I am trying to render my Datatable with Scroller plugin in. Data is loading once but when scrolled further shows loading data only. Am I missing something ? I am trying to implement it in Salesforce Lightning. I have loaded Scroller Library v1.4.2 and DataTable v1.10.11

sessionTable = $j('#table-1').DataTable(
 {
 "info": true,
 "searching": true,

 "processing": false,
 "dom": '<"div-pg"pi><"div-search"f><"div-tbl">t<"bottom-info"> ', // f search, p :- pagination , l:- page length
  paging:true,
 "order" : [[2,"asc"]],
 "serverSide": true,

 //scrollY: "200px",
 scrollX : true,
 "ajax": function (data, callback, settings) {
              var allRecs = component.get("c.runQuery");


              allRecs.setParams(
              {
                 "request" : data ,
              });

                 allRecs.setCallback(this, function(response)
                 {
                    console.log('in setCallback Populating Data' );
                    /*console.log(response.getReturnValue());*/

                    var state = response.getState();

                     if(state === 'SUCCESS' && response.getReturnValue != null)
                     {
                         //callback(JSON.parse(response.getReturnValue()));
                        //callback(sessionTable.rows.add(JSON.parse(response.getReturnValue())).columns.adjust().draw());

                         var resp = JSON.parse(response.getReturnValue());
                         console.log(resp);

                         setTimeout( function () {
                         callback( {
                             draw:resp.draw,
                             data: JSON.parse(resp.data),
                             recordsTotal: resp.recordsTotal,
                             recordsFiltered: resp.recordsTotal
                         } );
                              }, 200 );



                 });
                 $A.enqueueAction(allRecs);
     },


 scrollY:     "300px",
 scroller: {
     loadingIndicator: true
 },
 scrollCollapse: true,

 "language":
 {
     "emptyTable": "Loading Data"
 },

The issue was with Salesforce Lightning, it was not returning the response. Here is walkaround for this, we can force Salesforce to give response by adding following code after enqueuing:-

$A.enqueueAction(allRecs); 
window.setTimeout(
$A.getCallback(function() {
    console.log('Calling');                                     
}), 200);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM