如何使用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;
这是结果