我在使用数据表时遇到问题。当我为最后一列添加 colspan 时,数据表插件不会应用于表。如果我删除最后一个列的 colspan 并将其放入任何其他列,它就可以工作。
例如 -
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="stu_data_table">
<thead>
<tr>
<th> </th>
<th colspan="2"> </th>
<th colspan="2"> </th>
</tr>
</thead>
<tbody>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
$('#stu_data_table').dataTable({
});
有什么解决办法吗?
您可以在 tr 的末尾添加隐藏列,而不是使用 复杂的标题示例,它很hacky,但在我看来更简单、更短:
<thead>
<tr>
<th> </th> <!-- column 1 -->
<th colspan="2"> </th> <!-- column 2&3 -->
<th colspan="2"> </th> <!-- column 4&5 -->
<!-- hidden column 6 for proper DataTable applying -->
<th style="display: none"></th>
</tr>
</thead>
<tbody>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<!-- hidden column 6 for proper DataTable applying -->
<td style="display: none"></td>
</tr>
</tbody>
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"> </th> <!-- column 1 -->
<th colspan="2"> </th> <!-- column 2&3 -->
<th colspan="2"> </th> <!-- column 4&5 -->
</tr>
<tr>
<th> </th> <!-- column 2 -->
<th> </th> <!-- column 3 -->
<th> </th> <!-- column 4 -->
<th> </th> <!-- column 5 -->
</tr>
</thead>
dataTable 不支持 colspan 或 rowspan。
如果您使用 colspan,dataTable 将无法理解列计数/计算,在这种情况下返回未定义并抛出错误。
所以我们需要做的是告诉dataTable,如果它没有得到预期的结果,应该采取什么替代方案。
为此,我们将使用:defaultContent 属性,当然还要指定目标/受影响的列。
例如:在有 3 个 td 的表格上,如果我们使用 td colspan="2",我们将必须为其他 2 个设置默认值(因为一个已经存在 - 而且是第一个)。
代码:
"aoColumnDefs": [{
"aTargets": [2,3],
"defaultContent": "",
}]
另一种方法是使用
Child rows
。这最终会在父级下方添加一行,如下图所示
代码
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');
});
我知道这是一个老话题,但我也遇到了同样的问题。
<th colspan="2">
正在工作,但奇怪的是,只有在最后一列中使用它时才起作用。
所以
这不起作用
<tr>
<th> </th> <!-- column 1 -->
<th> </th> <!-- column 2 -->
<th colspan="2"> </th> <!-- column 3&4 -->
</tr>
但这正在起作用。
<tr>
<th> </th> <!-- column 1 -->
<th colspan="2"> </th> <!-- column 2&3 -->
<th> </th> <!-- column 4 -->
</tr>
在
当我使用时 “aoColumnDefs”:[{ “aTargets”:[2,3], “默认内容”:“”, }] 分页和过滤器正在消失