news 2026/4/17 20:06:21

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/17 21:40:28

DailyNotes:终极免费笔记与任务管理解决方案

DailyNotes&#xff1a;终极免费笔记与任务管理解决方案 【免费下载链接】DailyNotes App for taking notes and tracking tasks on a daily basis 项目地址: https://gitcode.com/gh_mirrors/da/DailyNotes 你是否经常忘记重要任务&#xff1f;&#x1f4a1;是否在寻找…

作者头像 李华
网站建设 2026/4/18 8:39:40

15分钟用多态打造可扩展的通知系统原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个支持多通道扩展的通知系统原型&#xff1a;1. 定义Notification接口含send(message)&#xff1b;2. 实现EmailNotification、SMSNotification&#xff1b;3. 演示新增微…

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

从‘sageattention‘缺失看深度学习项目依赖管理实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个深度学习项目模板&#xff0c;当检测到sageattention缺失时自动执行以下流程&#xff1a;1)检查CUDA和PyTorch版本兼容性 2)搜索相似的attention实现方案 3)提供降级方案或…

作者头像 李华
网站建设 2026/4/18 8:28:04

标书查重,还在人眼核对?——这份“查重单机版”安全又精准

“标书编制耗时漫长&#xff0c;多人协作版本混乱&#xff0c;格式错误低级却致命&#xff0c;复制粘贴留下重复隐患……”这或许是每一位投标专员、项目经理深夜加班时的真实心境。在严苛的招标要求与极限的时间压力下&#xff0c;依赖人眼逐字比对的传统方法&#xff0c;已触…

作者头像 李华
网站建设 2026/4/18 4:17:07

QtScrcpy终极指南:从零开始掌握安卓投屏黑科技

QtScrcpy终极指南&#xff1a;从零开始掌握安卓投屏黑科技 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy 还…

作者头像 李华