代码之家  ›  专栏  ›  技术社区  ›  karmendra

DataTables 1.10列计数

  •  4
  • karmendra  · 技术社区  · 9 年前

    我想再添加一个 <thead> 它将包含数据表中该列的过滤器。

    我可以使用下面的脚本来实现这一点。(为了实现这一点,我应该在dom中定义head)

    var tableid = $('#dataTableBuilder');
    num_columns = tableid.find('thead > tr:first > th').length;
    tableid.find('thead > tr:first').before('<tr id="filter-row"></tr>');
    var filterrow = tableid.find('#filter-row');
    
    while (num_columns-- > 0) filterrow.append('<th></th>');
    

    问题是我不想查看DOM来计算要添加的列数 <th> 。(原因是我正在使用Yajra Datatables HtmlBuilder生成我的表,我不知道前面的列数,这添加的表代码仅为 <table id='xxxxxx'></table> )

    我希望问题被理解,我只需要知道如何使用数据表获得列数。

    我试过了 myDataTable.fnSettings().aoColumns.length 但它说“fnSettings不是一个函数”,它看起来像是在1.10中被取消了,有什么替代方法吗?

    1 回复  |  直到 9 年前
        1
  •  7
  •   davidkonrad    9 年前

    使用1.10.x API有多种方法可以获得列数。示例:

    var colCount = table.columns().header().length;
    var colCount = table.row(0).data().length;
    var colCount = table.columns()[0].length;
    ...
    

    关于 myDataTable.fnSettings().aoColumns.length 我相信你在想

    table.init().columns / table.init().aoColumns

    但是 table.init() 仅保留您实际传递给dataTables的初始化选项。如果您有这样的dataTables初始化

    var table = $("#example").DataTable({
       columnDefs : [
         { targets : [0], sortable : false }
       ]
    })
    

    然后 table.init().columnDefs table.init().aoColumnDefs 将出席,但 table.init().columns 不会,因为你没有通过 columns 结构转换为dataTables。