0

0

layui table合并单元格 layui表格如何实现动态合并行或列

煙雲

煙雲

发布时间:2026-03-18 16:08:52

|

474人浏览过

|

来源于php中文网

原创

layui table 的 cols 配置不支持动态合并单元格,必须在 done 回调中通过原生 JS 遍历 tbody 行,依据字段值连续相同手动设置 rowspan/colspan 属性实现合并。

layui table 的 cols 配置不支持动态合并单元格

layui 原生 table 组件的列配置(cols)只接受静态结构,rowspancolspan 必须在初始化时写死,无法根据后端数据自动计算合并逻辑。这是最常被误解的起点——很多人以为加个 cellminwidth 或改个 align 就能触发合并,其实完全无关。

真正起作用的是渲染后的 DOM 操作,不是配置项。

  • 所有“合并”效果都得靠 done 回调里手动操作 <td>rowspan/colspan 属性
  • initSortdefaultToolbar 等配置对合并无影响
  • 开启 height 或使用 scroll 时,合并容易错位——因为虚拟滚动会复用 <tr>,必须重算

done 回调里遍历 tbody tr 手动合并行

这是目前最稳定、兼容性最好的做法:等表格渲染完,用原生 JS 遍历 <tbody> 的行,按字段值是否连续相同来决定是否合并。关键点是「连续」——非连续重复值不能合并,否则会跨数据块出错。

示例场景:后端返回用户列表,按 deptName 合并第一列

table.render({
  elem: '#demo',
  url: '/api/users',
  cols: [[
    {field: 'deptName', title: '部门'},
    {field: 'name', title: '姓名'},
    {field: 'role', title: '角色'}
  ]],
  done: function(res, curr, count) {
    mergeRows('deptName', 0); // 合并第0列(deptName),按值连续相同
  }
});
<p>function mergeRows(field, colIndex) {
const tbody = document.querySelector('#demo + .layui-table-box .layui-table-body tbody');
const rows = tbody.querySelectorAll('tr');
let rowspan = 1;
let currentVal = null;</p><p>for (let i = 0; i < rows.length; i++) {
const td = rows[i].cells[colIndex];
const data = JSON.parse(td.getAttribute('data-content') || '{}');
const val = data[field] || td.innerText.trim();</p><pre class='brush:php;toolbar:false;'>if (val === currentVal && i > 0) {
  rowspan++;
  td.style.display = 'none'; // 隐藏后续单元格
} else {
  if (rowspan > 1) {
    rows[i - rowspan].cells[colIndex].setAttribute('rowspan', rowspan);
  }
  currentVal = val;
  rowspan = 1;
}

} // 处理最后一组 if (rowspan > 1) { rows[rows.length - rowspan].cells[colIndex].setAttribute('rowspan', rowspan); } }

  • 必须用 data-content 取原始字段值,避免被格式化/过滤干扰(比如用了 templet
  • 不能直接用 innerText 判断,因为可能含空格、换行或 HTML 标签
  • 合并后记得调用 table.resize(),否则表头和内容可能错位

列合并(colspan)要小心表头与内容对齐

列合并本质是让一个 <td> 横跨多列,但 layui 表格的列宽由 width 或自动计算决定,colspan 不会自动拉伸该单元格宽度,容易导致文字溢出或遮挡相邻列。

Riffo
Riffo

Riffo是一个免费的文件智能命名和管理工具

下载
  • 优先考虑用 templet 渲染组合字段(如把「城市+区域」拼成一列),比强行 colspan 更可控
  • 若真要 colspan,需同步设置 td.style.width,且注意响应式下宽度失效问题
  • 表头(thead)不支持 colspan 动态变化;如果内容行合并了 2 列,表头也得提前写死 colspan="2",否则视觉断裂

分页、排序、搜索后合并失效怎么办

每次重载数据(table.reload())、切换页码、点击排序都会触发新渲染,之前手动加的 rowspan 全部丢失。这不是 bug,是预期行为——DOM 被替换了。

  • 必须把合并逻辑封装成函数,并在所有可能触发重绘的地方调用:donepage 回调、sort 回调、以及手动 reload 后的 done
  • 不要在 render 外部直接操作 tbody,因为异步加载时 DOM 可能还没生成
  • 如果用了服务端分页,确保后端返回的数据已按合并字段预排序,否则前端合并逻辑会断开

合并的本质是视觉聚类,不是数据建模。别指望它替代 groupBy 或后端聚合——字段值稍有差异(比如空格、大小写、null/undefined)就会让合并中断,这点最容易被忽略。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

202

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

275

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

413

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

233

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

122

2024.05.22

Python WebSocket实时通信与异步服务开发实践
Python WebSocket实时通信与异步服务开发实践

本专题聚焦 Python 在实时通信场景中的开发实践,系统讲解 WebSocket 协议原理、长连接管理、消息推送机制以及异步服务架构设计。内容包括客户端与服务端通信实现、连接稳定性优化、消息队列集成及高并发处理策略。通过完整案例,帮助开发者构建高效稳定的实时通信系统,适用于聊天应用、实时数据推送等场景。

5

2026.03.18

Java Spring Security权限控制与认证机制实战
Java Spring Security权限控制与认证机制实战

本专题围绕 Java 后端安全体系建设展开,重点讲解 Spring Security 在权限控制与认证机制中的应用实践。内容涵盖用户认证流程、权限模型设计、JWT 鉴权方案、OAuth2 集成以及接口安全防护策略。通过实际项目案例,帮助开发者构建安全可靠的后端认证体系,提升系统安全性与可扩展能力。

21

2026.03.18

抖漫入口地址合集
抖漫入口地址合集

本专题整合了抖漫入口地址相关合集,阅读专题下面的文章了解更多详细地址。

137

2026.03.17

多环境下的 Nginx 安装、结构与运维实战
多环境下的 Nginx 安装、结构与运维实战

本专题聚焦多环境下Nginx实战,详解开发、测试及生产环境的差异化安装策略与目录结构规划。深入剖析配置模块化设计、灰度发布流程及跨环境同步机制。结合监控告警、故障排查与自动化运维工具,提供全链路管理方案,助力团队构建灵活、高可用的Nginx服务体系,从容应对复杂业务场景挑战。

14

2026.03.17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号