更改jQuery数据表中显示的行数

时间:2012-09-06 13:32:47

标签: javascript jquery datatable

为什么jquery datatable中的行数(参见下面的代码)未设置为5?它默认等于10 8as)。为什么'iDisplayLength': 5在这里不起作用?

<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>

5 个答案:

答案 0 :(得分:14)

尝试这样的事情。 DataTables具有内置选项,可让您从AJAX源中提取数据,而无需自行构建。 Read the documentation并根据需要进行自定义:

function loadData() {
    var oTable = $('#newspaper-b').dataTable({
            "sAjaxSource": 'modules/getData.php',
            "sPaginationType": "full_numbers",
            "aaSorting": [
                [3, "asc"]
            ],
            "bJQueryUI": true,
            'iDisplayLength': 5,
            'bLengthChange': false
    });
};

要在加载数据后以某种方式修改表格,您需要添加fnDrawCallback选项:

 "fnDrawCallback": function( oSettings ) {
      // use jQuery to alter the content of certain cells
      $lastcell = $('#newspaper-b').find('tr').find('td:last');
      // manipulate it somehow
 }

答案 1 :(得分:6)

你可以尝试

$('#example').dataTable( {
        "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
    } );

答案 2 :(得分:4)

此外,如果您之前一直在运行/测试"bStateSave": trueiDisplayLength未指定/默认值,则iDisplayLength的已保存默认值将覆盖任何后续指定的尝试一个新值,你仍然会得到10行。尝试清空缓存,设置"bStateSave": false,指定所需的iDisplayLength,然后重新运行。

答案 3 :(得分:3)

检查此链接,您可能会发现它很有用:

Dynamically change iDisplayLength

答案 4 :(得分:1)

这绝对是我找到的最简单方法:

var oTable;

$(document).ready(function() {
    $('.some-button').click( function () {
        var oSettings = oTable.fnSettings();
        oSettings._iDisplayLength = 50;
        oTable.fnDraw();
    });

    oTable = $('#example').dataTable();
});