使用DataTables的rowGroup插件时如何隐藏未分组行的重复值?
DataTables rowGroup隐藏分组子行重复单元格实现方案
你可以通过createdRow行渲染回调配合分组标识判断的方式实现需求,具体实现代码如下:
// 存储上一行的分组字段值,用于判断当前行是否为同分组子行 let lastGroupVal = null; $('#yourTableId').DataTable({ // 其余原有配置(数据源、列定义、分页排序等配置保持不变) rowGroup: { // 你原来的分组字段配置保持不变,示例为按订单号分组 dataSrc: 'order_number', // 原有自定义startRender逻辑可直接保留,无需修改 startRender: function (rows, group) { // 你的原有自定义逻辑... } }, // 表格重绘前重置分组标识,避免分页、筛选、排序后逻辑出错 preDrawCallback: function () { lastGroupVal = null; }, // 每行渲染完成后的处理逻辑 createdRow: function (row, data, index) { // 当前行分组值和上一行相同,判定为同分组子行,清空对应重复列的内容 if (data.order_number === lastGroupVal) { // 0对应第一列Order Number,1对应第二列Invoice Date,可根据你的实际列索引调整 $('td:eq(0)', row).empty(); $('td:eq(1)', row).empty(); // 如果只需要隐藏内容保留单元格占位,可替换为以下代码: // $('td:eq(0), td:eq(1)', row).css('visibility', 'hidden'); } else { // 遇到新分组,更新存储的分组值 lastGroupVal = data.order_number; } } });
注意事项
- 代码中的
order_number需要替换为你实际绑定的分组字段名 - 列索引
eq(0)、eq(1)需要和你表格里需要去重的列的实际索引对应 - 如果你的分组依据是多个字段,只需要调整
createdRow里的判断逻辑,同时清空对应重复列即可
内容的提问来源于stack exchange,提问作者Eric Belair
相关产品推荐
相关产品推荐

