total count not being displayed correctly while waiting for response when using iDeferLoading
total count not being displayed correctly while waiting for response when using iDeferLoading
Hi, I'm trying to have the first page already populated while the ajax call is getting the rest of the table (for better "perceptual performance"). I populate the html with the first page of records on the server, set iDeferLoading: <number of records>
, and set bServerSide: false
. The problem is that the 2-3 seconds it takes for the ajax call to return the datatable shows "Showing 1 to 10 of 10 entries" and the pagination controls indicate there is only one page. Below is my code. When the ajax call returns it shows the correct number and the pagination controls show that there are many pages. When I turn on bServerSide it works correctly (but I want to keep processing on the client side). Is this a bug or is there so other way to do this?
$dataTable = $("#dataTable").dataTable({
bPaginate: true,
bProcessing: false,
bServerSide: false,
bSortClasses: false,
bDeferRender: true,
iDeferLoading: $num_records,
sAjaxSource: $url,
fnServerData: function (sSource, aoData, fnCallback) {
$.ajax({
dataType: "json",
type: "GET",
url: sSource,
data: {},
success: function (result) {
if (result.Success) {
//we already have the first 10 so slice them out!
fnCallback(result.Data.slice(10));
} else {
showMessage(result.Message);
}
}
});
},
});
Thanks,
Anthony Bell
Answers
Hi Anthony,
Are you able to link to a test case showing the issue? There is my example of that option in action and it seems to work okay: http://datatables.net/examples/server_side/defer_loading.html , so I think I'd need to be able to see a test case of it not working to understand what is going wrong.
Regards,
Allan
Here is a jsFiddle: http://jsfiddle.net/abell25/3ne2H/3/
I have set
iDeferLoading: 6
, but the table shows "Showing 1 to 2 of 2 entries".It should say "Showing 1 to 2 of 6 entries" (and it does when using server-side loading).
Why
"aaData": the_data,
if the_data is not what you want?
the_data is just the first page in this very simple example. It is pre-loaded to increase the perceived loading time. A real example would preload 10 records and use ajax to grab 1000+ records.