如何使用datatable.js在tbody中使用rowspan和colspan?

每当我使用

,我都会收到以下错误:

未捕获的TypeError:无法设置未定义的属性’_DT_CellIndex’(…)

演示

 $("table").DataTable({}); 
    
1 2 3 4 5 6
1 2 3 4 5 6
1 3 4 4 5 6

它在没有DataTables.js的情况下正常工作,但是当我们将这个结构与datatable.js一起使用时,它无法正常工作。 我们需要上面的表结构。 有谁知道我们如何使用这个表结构datatable.js?

您可以通过为每个消除的单元格添加“隐形”单元来解决缺乏colspan支持的问题:

  Wide column     Normal column Normal column Normal column  

DataTables没有抱怨,表正常呈现并且排序工作(不可见列排序为空字符串)。

我没有用rowspan试过这个。

现在,数据表不支持对表体的rowspan或colspan。

参考

但是,可能的解决方案应该是

DataTables隐藏行详细信息示例

希望它有效。

COLSPAN:Ajax或JavaScript源数据

Dirk Bergstrom提供的优秀解决方案仅适用于HTML源数据。

对Ajax源数据也可以使用相同的想法。

在表体中创建TR元素时,需要使用createdRow选项来修改所需的单元格。

例如:

 var table = $('#example').DataTable({ ajax: 'https://api.myjson.com/bins/qgcu', createdRow: function(row, data, dataIndex){ // If name is "Ashton Cox" if(data[0] === 'Ashton Cox'){ // Add COLSPAN attribute $('td:eq(1)', row).attr('colspan', 3); // Hide required number of columns // next to the cell with COLSPAN attribute $('td:eq(2)', row).css('display', 'none'); $('td:eq(3)', row).css('display', 'none'); // Update cell data this.api().cell($('td:eq(1)', row)).data('N/A'); } } }); 

有关代码和演示,请参阅此示例 。

有关详细信息,请参阅表体TBODY中的jQuery DataTables:COLSPAN – Ajax数据文章。

ROWSPAN

可以使用RowsGroup插件模拟ROWSPAN属性。

要使用该插件,您需要包含JavaScript文件dataTables.rowsGroup.js并使用rowsGroup选项指示要应用分组的列的索引。

 var table = $('#example').DataTable({ 'rowsGroup': [2] }); 

有关代码和演示,请参阅此示例 。

有关详细信息,请参阅表格TBODY文章中的jQuery DataTables:ROWSPAN 。

COLSPAN和ROWSPAN

如果我们结合上述两种解决方法,则可以同时垂直和水平地对单元进行分组。

有关代码和演示,请参阅此示例 。

有关详细信息,请参阅表体TBODY – COLSPAN和ROWSPAN文章中的jQuery DataTables:COLSPAN 。

请参阅以下链接。

fnFakeRowspan

另请参阅此处的插件。

fnFakeRowspan插件

希望对你有帮助

我不知道在什么时候,但我猜fnFakeRowspan不支持当前的DataTable版本。

另外,checkout RowsGroup插件。

发现它很容易实现并且运行良好。 搜索工作完美,订购没有。

点击此处查看实施情况。

因为数据表不支持colspan,所以我通常最终使用无序列表(ul)和list-style:none;

这是结果