Why the number of rows in jquery datatable
(see the code below) is not set to 5? It is equal to 10 8as by default). Why 'iDisplayLength': 5
does not work here?
<script>
function loadData() {
$.getJSON(
'modules/getData.php',
function(data) {
var oTable = $('#newspaper-b').dataTable({
"sPaginationType":"full_numbers",
"aaSorting":[[3, "asc"]],
"bJQueryUI":true,
'iDisplayLength': 5,
'bLengthChange': false
});
oTable.fnDraw();
var list = data.flights;
var textToInsert = '';
for (var i = 0; i < list.length; i++) {
aux = list[i];
textToInsert += '<tr><td>';
textToInsert += aux.Var1;
textToInsert += '</td> </tr>' ;
}
$('table#newspaper-b tbody').html(textToInsert);
}
);
}
</script>
Why the number of rows in jquery datatable
(see the code below) is not set to 5? It is equal to 10 8as by default). Why 'iDisplayLength': 5
does not work here?
<script>
function loadData() {
$.getJSON(
'modules/getData.php',
function(data) {
var oTable = $('#newspaper-b').dataTable({
"sPaginationType":"full_numbers",
"aaSorting":[[3, "asc"]],
"bJQueryUI":true,
'iDisplayLength': 5,
'bLengthChange': false
});
oTable.fnDraw();
var list = data.flights;
var textToInsert = '';
for (var i = 0; i < list.length; i++) {
aux = list[i];
textToInsert += '<tr><td>';
textToInsert += aux.Var1;
textToInsert += '</td> </tr>' ;
}
$('table#newspaper-b tbody').html(textToInsert);
}
);
}
</script>
Share
Improve this question
edited Jan 3, 2017 at 20:31
Brian Tompsett - 汤莱恩
5,88372 gold badges61 silver badges133 bronze badges
asked Sep 6, 2012 at 13:32
You KuperYou Kuper
1,1137 gold badges19 silver badges38 bronze badges
2
- Why are you intializing the datatable and then explicitly putting the data+html inside the table; Why not let the datatable handle that itself! – Vishal Commented Sep 6, 2012 at 13:39
- This is just a code piece. I need to make last 2 columns as input fields. – You Kuper Commented Sep 6, 2012 at 13:45
4 Answers
Reset to default 14Try something like this. DataTables has built-in options that let you pull data from an AJAX source without trying to build it yourself. Read the documentation and customize it as needed:
function loadData() {
var oTable = $('#newspaper-b').dataTable({
"sAjaxSource": 'modules/getData.php',
"sPaginationType": "full_numbers",
"aaSorting": [
[3, "asc"]
],
"bJQueryUI": true,
'iDisplayLength': 5,
'bLengthChange': false
});
};
To modify the table in some way after the data is loaded, you'll want to add the fnDrawCallback
option:
"fnDrawCallback": function( oSettings ) {
// use jQuery to alter the content of certain cells
$lastcell = $('#newspaper-b').find('tr').find('td:last');
// manipulate it somehow
}
You can try
$('#example').dataTable( {
"aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
} );
In addition, if you have previously been running/testing with "bStateSave": true
and iDisplayLength
not specified/at the default, then the saved default for iDisplayLength
will override any subsequent attempts to specify a new value, and you will still get 10 rows. Try emptying the cache, setting "bStateSave": false
, specifying the iDisplayLength
you want, and running again.
This is definetely the easiest way I found:
var oTable;
$(document).ready(function() {
$('.some-button').click( function () {
var oSettings = oTable.fnSettings();
oSettings._iDisplayLength = 50;
oTable.fnDraw();
});
oTable = $('#example').dataTable();
});