当前位置: 首页 > news >正文

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分钟内看到超级专业的合并效果!

http://www.cnnetsun.cn/news/133917.html

相关文章:

  • PCB激光钻孔:CO₂激光VS紫外激光,谁更胜一筹?
  • 数据质量革命:Great Expectations如何重塑企业数据治理格局
  • AI如何帮你快速解决SQL Server连接问题
  • torch.matmul性能优化:比传统方法快10倍的技巧
  • OpenModScan 完全指南:掌握工业自动化调试的必备利器
  • 深度学习压缩技术实战:CompressAI框架的5大核心应用场景
  • 10分钟快速上手:Android离线语音识别的终极解决方案
  • 高效PLC通信框架:S7NetPlus实用开发指南
  • 如何快速上手Semantic UI Calendar:终极前端日期选择器指南
  • 电商平台如何用Kafka工具实现实时订单处理
  • Rustup深度解析:告别版本管理烦恼的终极指南
  • FlyFish:企业级数据可视化的低代码革命
  • RobotGo事件监听:构建智能GUI自动化系统的核心技术
  • 超实用教程:Mikan Project带你轻松玩转动漫资源管理
  • Ubuntu输入法实战:打造个性化中文输入环境
  • 3大核心技巧:充分发挥Windows终端扩展能力
  • 零基础学编程:二维数组的5个简单练习
  • Jupyter AI深度应用:重新定义数据科学工作流的智能化转型
  • 基于鸿蒙的在线学习系统的设计与实现外文翻译
  • 基于回归分析的武当山景点游客流量分析与预测+中期检查报告
  • 秒级验证:Windows Docker环境快速搭建方案
  • 零基础入门:Clash Verge的安装与配置指南
  • 小白也能懂:用快马制作第一个SaaS应用的完整指南
  • cks解题思路-1.32-3
  • Luckysheet数据验证终极指南:告别数据录入错误的完整教程
  • EdgeDeflector终极指南:重夺Windows浏览器选择权
  • 策略模式VS if-else:性能对比实测
  • KlipperScreen触摸屏界面终极安装完整指南
  • 比Docker官方源快10倍:国内镜像源深度测评
  • 【小陈背八股-C++】Day04-大厂面试直击:Vector扩容机制,你真的懂STL容器吗?