DataTables - 为最后一列添加 colspan 时不起作用

问题描述 投票:0回答:6

我在使用数据表时遇到问题。当我为最后一列添加 colspan 时,数据表插件不会应用于表。如果我删除最后一个列的 colspan 并将其放入任何其他列,它就可以工作。

例如 -

<table width="100%" border="0" cellspacing="0" cellpadding="0" id="stu_data_table">
   <thead>
      <tr>    
        <th>&nbsp;</th>
        <th colspan="2">&nbsp;</th>
        <th colspan="2">&nbsp;</th>
      </tr>
   </thead>
   <tbody>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
   </tbody>
</table>

$('#stu_data_table').dataTable({
});

有什么解决办法吗?

jquery html datatables
6个回答
9
投票

您可以在 tr 的末尾添加隐藏列,而不是使用 复杂的标题示例,它很hacky,但在我看来更简单、更短:

<thead>
  <tr>    
    <th>&nbsp;</th> <!-- column 1 -->
    <th colspan="2">&nbsp;</th> <!-- column 2&3 -->
    <th colspan="2">&nbsp;</th> <!-- column 4&5 -->

    <!-- hidden column 6 for proper DataTable applying -->
    <th style="display: none"></th> 
  </tr>
</thead>

<tbody>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>

    <!-- hidden column 6 for proper DataTable applying -->
    <td style="display: none"></td>
  </tr>
</tbody>

8
投票

DataTables 不支持 colspan,就像您正在使用的那样。请遵循他们的复杂标头示例

当使用表格显示数据时,您经常希望显示 分组中的列信息。 DataTables 完全支持 colspan 和 header 中的 rowspans,将所需的排序侦听器分配给 适合该色谱柱的 TH 元件。 每一列必须有一个TH 单元格(并且只有一个)对于听众来说是独一无二的 已添加。 下面所示的示例具有核心浏览器信息 组合在一起。

<thead>
    <tr>
        <th rowspan="2">Rendering engine</th>
        <th rowspan="2">Browser</th>
        <th colspan="3">Details</th>
    </tr>
    <tr>
        <th>Platform(s)</th>
        <th>Engine version</th>
        <th>CSS grade</th>
    </tr>
</thead>

你的等价物看起来像这样:

<thead>
  <tr>    
    <th rowspan="2">&nbsp;</th> <!-- column 1 -->

    <th colspan="2">&nbsp;</th> <!-- column 2&3 -->
    <th colspan="2">&nbsp;</th> <!-- column 4&5 -->
  </tr>
 <tr>
    <th>&nbsp;</th> <!-- column 2 -->
    <th>&nbsp;</th> <!-- column 3 -->

    <th>&nbsp;</th> <!-- column 4 -->
    <th>&nbsp;</th> <!-- column 5 -->
 </tr>
</thead>

4
投票

dataTable 不支持 colspan 或 rowspan。

如果您使用 colspan,dataTable 将无法理解列计数/计算,在这种情况下返回未定义并抛出错误。

所以我们需要做的是告诉dataTable,如果它没有得到预期的结果,应该采取什么替代方案。

为此,我们将使用:defaultContent 属性,当然还要指定目标/受影响的列。

例如:在有 3 个 td 的表格上,如果我们使用 td colspan="2",我们将必须为其他 2 个设置默认值(因为一个已经存在 - 而且是第一个)。

代码:

"aoColumnDefs": [{
  "aTargets": [2,3],
  "defaultContent": "",
}]

4
投票

另一种方法是使用

Child rows
。这最终会在父级下方添加一行,如下图所示

enter image description here

代码

var table =jQuery('#bwki_sites_display').DataTable( {
    'pageLength': 10,
    'lengthMenu': [ 10, 20, 50, 100, 200 ],
    'order': [[ 0, 'desc' ]],

    }
);
table.rows().every( function () {
    var row = table.row( $(this));
    html = '<i class="fa fa-plus"></i>Colspan will come here';              
    row.child(html).show();
    $(this).addClass('shown');                                              
});

1
投票

我知道这是一个老话题,但我也遇到了同样的问题。

<th colspan="2">
正在工作,但奇怪的是,只有在最后一列中使用它时才起作用。

所以

这不起作用

<tr>    
    <th>&nbsp;</th> <!-- column 1 -->
    <th>&nbsp;</th> <!-- column 2 -->
    <th colspan="2">&nbsp;</th> <!-- column 3&4 -->
</tr>

但这正在起作用。

<tr>    
    <th>&nbsp;</th> <!-- column 1 -->
    <th colspan="2">&nbsp;</th> <!-- column 2&3 -->
    <th>&nbsp;</th> <!-- column 4 -->
</tr>


0
投票

当我使用时 “aoColumnDefs”:[{ “aTargets”:[2,3], “默认内容”:“”, }] 分页和过滤器正在消失

© www.soinside.com 2019 - 2024. All rights reserved.