【问题标题】:Change the number of displayed rows in jQuery datatable更改 jQuery 数据表中显示的行数
【发布时间】:2012-08-31 08:16:06
【问题描述】:

为什么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>

【问题讨论】:

  • 你为什么要初始化数据表,然后显式地将数据+html放入表中;为什么不让数据表自己处理呢!
  • 这只是一段代码。我需要将最后 2 列作为输入字段。

标签: javascript jquery datatable


【解决方案1】:

试试这样的。 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
 }

【讨论】:

  • 在这种情况下如何定义某些列是输入字段?
  • 更新了答案。 DataTables 几乎可以解决所有问题,但是选项太多,很难找到您需要的东西。搜索该网站通常会得到很好的结果。
【解决方案2】:

你可以试试

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2012-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-08
        相关资源
        最近更新 更多