1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | layui.use( 'table' , function () { var table = layui.table; table.render({ elem: '#applyTab' , url: '${cxt}/yptPreferentialApply/detail_data?id=${detailId}' , cols: [[ {field: 'goodsName' , title: '产品名称' } , { field: 'priceType' , title: '价格类型' , templet: function (d) { switch (d.priceType) { case "0" : return "免费" ; case "1" : return "按次" ; case "2" : return "包天" ; case "3" : return "包月" ; case "4" : return "包年" ; case "5" : return "包时" ; } } } , {field: 'price' , title: '单价' } , {field: 'discount' , title: '折扣(%)' } , {field: 'preferentialPrice' , title: '优惠价格' } , {field: 'chargeUnit' , title: '计价单位' } ]] , done: function (res, curr, count) { merge(res, curr, count); } }); }); /** * 合并单元格 * @param res 表格数据 * @param curr 当前页 * @param count 总数 */ function merge(res, curr, count) { var data = res.data; var mergeIndex = 0; //定位需要添加合并属性的行数 var mark = 1; //这里涉及到简单的运算,mark是计算每次需要合并的格子数 var columsName = [ 'goodsName' ]; //需要合并的列名称 var columsIndex = [0]; //需要合并的列索引值 for ( var k = 0; k < columsName.length; k++) //这里循环所有要合并的列 { var trArr = $( ".layui-table-body>.layui-table" ).find( "tr" ); //所有行 for ( var i = 1; i < res.data.length; i++) { //这里循环表格当前的数据 var tdCurArr = trArr.eq(i).find( "td" ).eq(columsIndex[k]); //获取当前行的当前列 var tdPreArr = trArr.eq(mergeIndex).find( "td" ).eq(columsIndex[k]); //获取相同列的第一列 if (data[i][columsName[k]] === data[i - 1][columsName[k]]) { //后一行的值与前一行的值做比较,相同就需要合并 mark += 1; tdPreArr.each( function () { //相同列的第一列增加rowspan属性 $( this ).attr( "rowspan" , mark); }); tdCurArr.each( function () { //当前行隐藏 $( this ).css( "display" , "none" ); }); } else { mergeIndex = i; mark = 1; //一旦前后两行的值不一样了,那么需要合并的格子数mark就需要重新计算 } } } } |
多列合并:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | /** * 合并单元格 * @param res 表格数据 * @param curr 当前页 * @param count 总数 */ function merge(res, curr, count) { var data = res.data; //alert(JSON.stringify(data)); var mergeIndex = 0; //定位需要添加合并属性的行数 var mark = 1; //这里涉及到简单的运算,mark是计算每次需要合并的格子数 var columsName = [ 'CusID' ]; //需要合并的列名称 var columsIndex = [0]; //需要合并的列索引值 for ( var k = 0; k < columsName.length; k++) //这里循环所有要合并的列 { mark = 1; var trArr = $( ".layui-table-body>.layui-table" ).find( "tr" ); //所有行 for ( var i = 1; i < res.data.length; i++) { //这里循环表格当前的数据 var tdCurArr = trArr.eq(i).find( "td" ).eq(columsIndex[k]); //获取当前行的当前列 var tdPreArr = trArr.eq(mergeIndex).find( "td" ).eq(columsIndex[k]); //获取相同列的第一列 if (data[i][columsName[k]] === data[i - 1][columsName[k]]) { //后一行的值与前一行的值做比较,相同就需要合并 // alert(data[i][columsName[k]]); mark += 1; tdPreArr.each( function () { //相同列的第一列增加rowspan属性 $( this ).attr( "rowspan" , mark); }); tdCurArr.each( function () { //当前行隐藏 $( this ).css( "display" , "none" ); }); } else { mergeIndex = i; mark = 1; //一旦前后两行的值不一样了,那么需要合并的格子数mark就需要重新计算 } } } mergeIndex = 0; //定位需要添加合并属性的行数 mark = 1; //这里涉及到简单的运算,mark是计算每次需要合并的格子数 columsName = [ 'CusName' ]; //需要合并的列名称 columsIndex = [1]; //需要合并的列索引值 for ( var k = 0; k < columsName.length; k++) //这里循环所有要合并的列 { mark = 1; var trArr = $( ".layui-table-body>.layui-table" ).find( "tr" ); //所有行 for ( var i = 1; i < res.data.length; i++) { //这里循环表格当前的数据 var tdCurArr = trArr.eq(i).find( "td" ).eq(columsIndex[k]); //获取当前行的当前列 var tdPreArr = trArr.eq(mergeIndex).find( "td" ).eq(columsIndex[k]); //获取相同列的第一列 if (data[i][columsName[k]] === data[i - 1][columsName[k]]) { //后一行的值与前一行的值做比较,相同就需要合并 // alert(data[i][columsName[k]]); mark += 1; tdPreArr.each( function () { //相同列的第一列增加rowspan属性 $( this ).attr( "rowspan" , mark); }); tdCurArr.each( function () { //当前行隐藏 $( this ).css( "display" , "none" ); }); } else { mergeIndex = i; mark = 1; //一旦前后两行的值不一样了,那么需要合并的格子数mark就需要重新计算 } } } } |
分类:
Html 元素
, JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2006-10-01 timespan 和 datetime 的比较
2006-10-01 asp.net中合并DataGrid行
2006-10-01 DataGrid实现简单的行分组
2006-10-01 DATAGRID分组 ------------ -通用函数