news 2026/4/16 13:49:52

jQuery EasyUI 数据网格 - 合并单元格

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jQuery EasyUI 数据网格 - 合并单元格

下面直接给你最实用、最常见的合并单元格(merge cells)方法,jQuery EasyUI datagrid 官方没有内置合并,但通过onLoadSuccess事件超级容易实现,复制粘贴就能用,领导最爱的“同一客户订单合并显示 + 报表分组效果”全都有!

方法1:最简单最常用 - 按指定列合并单元格(推荐现在就用这个,3秒出效果)
比如按“客户名称”列合并相同行的单元格。

<tableid="dg"class="easyui-datagrid"title="合并单元格示例"style="width:800px;height:400px"data-options="url:'data.json', fitColumns:true, rownumbers:true, pagination:true, singleSelect:true, onLoadSuccess:mergeCellsByField"><thead><tr><thdata-options="field:'customer',width:120">客户名称</th><thdata-options="field:'product',width:150">商品名称</th><thdata-options="field:'price',width:100,align:'right'">单价</th><thdata-options="field:'quantity',width:80,align:'right'">数量</th><thdata-options="field:'amount',width:120,align:'right'">金额</th><thdata-options="field:'date',width:100">订单日期</th></tr></thead></table><script>// 通用的合并函数,支持同时合并多列functionmergeCellsByField(){varfields=['customer','date'];// 要合并的列字段名数组vardg=$('#dg');varrows=dg.datagrid('getRows');for(vari=0;i<fields.length;i++){varfield=fields[i];varcol=dg.datagrid('getColumnOption',field);col.editor=false;// 防止编辑时出错varmergeIndex=0;// 合并起始行varmergeCount=1;// 合并行数for(varj=1;j<=rows.length;j++){if(j<rows.length&&rows[j][field]==rows[j-1][field]){mergeCount++;}else{if(mergeCount>1){dg.datagrid('mergeCells',{index:mergeIndex,field:field,rowspan:mergeCount});}mergeIndex=j;mergeCount=1;}}}}</script>

效果:相同客户名称的行会自动合并客户列,相同日期的行合并日期列,报表感瞬间拉满!

方法2:高级版 - 支持跨列合并 + 合并后居中显示(更专业)

functionmergeCellsAdvanced(){vardg=$('#dg');varrows=dg.datagrid('getRows');// 合并客户列(垂直合并)mergeByField('customer');// 合并金额列为大标题(水平合并整行最后三列)dg.datagrid('mergeCells',{index:0,// 从第0行开始(可循环处理多组)field:'price',colspan:3// 合并 price + quantity + amount 三列});functionmergeByField(field){varmergeIndex=0;varmergeCount=1;for(vari=1;i<rows.length;i++){if(rows[i][field]==rows[i-1][field]){mergeCount++;}else{if(mergeCount>1){dg.datagrid('mergeCells',{index:mergeIndex,field:field,rowspan:mergeCount});// 可选:合并后文字垂直+水平居中setTimeout(function(){$('div.datagrid-cell[field="'+field+'"]').eq(mergeIndex).css({'text-align':'center','vertical-align':'middle'});},100);}mergeIndex=i;mergeCount=1;}}// 处理最后一段if(mergeCount>1){dg.datagrid('mergeCells',{index:mergeIndex,field:field,rowspan:mergeCount});}}}

然后在onLoadSuccess: mergeCellsAdvanced

方法3:分组加载 + 合并(适合大数据,分组标题行)
后台返回数据时加分组标识,前端插入标题行并合并:

onLoadSuccess:function(data){vardg=$(this);varrows=data.rows;varinsertIndex=0;for(vari=0;i<rows.length;){vargroupValue=rows[i].customer;vargroupRows=[];while(i<rows.length&&rows[i].customer==groupValue){groupRows.push(rows[i]);i++;}// 插入分组标题行dg.datagrid('insertRow',{index:insertIndex,row:{customer:'<b style="color:blue;">【'+groupValue+'】共'+groupRows.length+'笔订单</b>',product:'',price:'',quantity:'',amount:'',date:''}});// 合并标题行整行dg.datagrid('mergeCells',{index:insertIndex,field:'customer',colspan:6// 合并所有列});insertIndex+=groupRows.length+1;}}

你现在直接复制方法1到你的页面,刷新一下就能看到完美合并单元格效果了!
结合之前的复选框 + 分页 + 行内编辑 + 列运算 + 扩展编辑器,你的报表表格已经可以吊打99%的后台系统了。

想要我给你一个完整的HTML示例(带远程数据 + 多列合并 + 分组标题 + 底部合计)?
或者你告诉我你想怎么合并(比如“按省份合并 + 水平合并合计列”),我2分钟发你完整代码,复制就能跑!

快说说你现在的需求(比如“要合并多列”或“合并后加背景色”),我手把手帮你搞定,5分钟内看到超级专业的合并效果!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:19:36

如何在10分钟内完成MosDNS部署:面向新手的完整操作手册

如何在10分钟内完成MosDNS部署&#xff1a;面向新手的完整操作手册 【免费下载链接】mosdns mosdns - 一个DNS转发器&#xff0c;使用Go语言编写&#xff0c;遵循GPLv3许可。 项目地址: https://gitcode.com/gh_mirrors/mo/mosdns MosDNS是一款使用Go语言编写的高性能DN…

作者头像 李华
网站建设 2026/4/13 18:50:53

3分钟掌握CSS Grid Generator:可视化布局设计的革命性工具

3分钟掌握CSS Grid Generator&#xff1a;可视化布局设计的革命性工具 【免费下载链接】cssgridgenerator &#x1f9ee; Generate basic CSS Grid code to make dynamic layouts! 项目地址: https://gitcode.com/gh_mirrors/cs/cssgridgenerator 在现代前端开发中&…

作者头像 李华
网站建设 2026/4/16 16:11:59

新手必看:SQL Server连接问题完全指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个新手友好的SQL Server连接教程应用。功能包括&#xff1a;1. 连接基础概念讲解&#xff1b;2. 常见错误图解&#xff1b;3. 简单问题一键修复&#xff1b;4. 交互式学习模块…

作者头像 李华
网站建设 2026/4/16 14:03:59

Flowise:AI如何革新你的开发流程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 使用Flowise平台&#xff0c;创建一个能够自动生成Python代码的AI助手。该助手应能根据用户输入的自然语言描述&#xff0c;生成相应的Python脚本&#xff0c;例如数据处理、自动化…

作者头像 李华
网站建设 2026/4/16 16:09:50

AI如何革新iOS解锁工具开发?iUnlockTool技术解析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个iOS设备解锁辅助工具原型&#xff0c;使用AI自动分析设备型号和系统版本&#xff0c;智能推荐最佳解锁方案。要求包含以下功能&#xff1a;1) 设备信息自动识别模块 2) 基于…

作者头像 李华
网站建设 2026/4/16 14:04:56

告别命名纠结:AI助你10倍提升组件开发效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个VSCode插件&#xff0c;实时提供组件名智能建议&#xff1a;1) 输入组件功能描述自动生成符合规范的多单词名称&#xff1b;2) 支持从现有组件中学习命名模式&#xff1b;3…

作者头像 李华