我使用DataTables时遇到问题。当我为最后一列添加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({
});
对此有何解决方案?
答案 0 :(得分:7)
DataTables doesn't support colspans like you're using them。请改为关注complex header example。
使用表格显示数据时,您通常希望显示 组中的列信息。 DataTables完全支持colspan和 标题中的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>
答案 1 :(得分:4)
dataTable不支持colspan或rowspan。
如果使用colspan,dataTable不会理解列计数/计算,返回undefined并在这种情况下抛出错误。
所以我们需要做的是告诉dataTable,如果它没有得到预期的结果,应该选择什么。
为此,我们将使用:defaultContent属性,当然还要指定目标/受影响的列。
例如:如果我们使用 td colspan =&#34; 2&#34; ,在3 td 的桌面上,我们将不得不设置其他2的默认值(因为一个已经存在 - 并且它是第一个)。
代码:
"aoColumnDefs": [{
"aTargets": [2,3],
"defaultContent": "",
}]
答案 2 :(得分:3)
另一种方法是使用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');
});
答案 3 :(得分:3)
代替使用complex header example,您可以将隐藏的列添加到tr的末尾,这很麻烦,但我认为它更简单,更短:
<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>
答案 4 :(得分:1)
我知道这是一个老话题,但是我有同样的问题。 <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>
at