- 浏览: 62371 次
- 性别:
- 来自: 济南
文章分类
最新评论
效果图:查看附件
伪代码如下:
伪代码如下:
$('#reportTable').bootstrapTable({ method: 'POST', cache: false, // url:projectpath+"/certificate/kcgl2/queryPagedResult.do", url:projectpath+"/certificate/zsph2/queryPagedResult.do", contentType: "application/x-www-form-urlencoded", dataType: "json", pagination: true, //是否显示分页(*) striped: false,//隔行换色 sidePagination: 'server',//分页方式 pageNumber: 1,//初始化table时显示的页码 pageSize: 5,//每页条目 pageList: [5, 10, 20, 50, 100], locale: 'zh-CN', sortable: true,//排序 showColumns: true,//是否显示 内容列下拉框 clickToSelect: false,//点击选中checkbox singleSelect: false,//启用单行选中 showExport: true,//是否显示导出 exportDataType: "all",//basic', 'all', 'selected'. queryParamsType: "", //默认值为 'limit' ,在默认情况下 传给服务端的参数为:offset,limit,sort queryParams: function queryParams(params) {//设置查询参数 // 设置为 '' 在这种情况下传给服务器的参数为:pageSize,pageNumber var param = { pageNumber: params.pageNumber, pageSize: params.pageSize, }; return param; }, columns:[ {title:'lch',field:"lch",title:"流程号",align:"center",valign:"middle",sortable:"true"}, {title:'sqdw',field:"sqdw",title:"申请单位",align:"center",valign:"middle",sortable:"true"}, {title:'lxr',field:"lxr",title:"联系人",align:"center",valign:"middle",sortable:"true"}, {title:'zslx',field:"zslx",title:"证书类型",align:"center",valign:"middle",sortable:"true"}, {title:'kszh',field:"kszh",title:"开始证号",align:"center",valign:"middle",sortable:"true"}, {title:'jszh',field:"jszh",title:"结束证号",align:"center",valign:"middle",sortable:"true"}, {title:'sfbj',field:"sfbj",title:"是否办结",align:"center",valign:"middle",sortable:"true"}, ], onLoadSuccess: function (data) { mergeTable(data,"reportTable"); } }); //全局变量 ***如果每次只是发送ajax请求对table进行局部更新,则每次要合并前前都应该清空这三个变量 不然全局变量会一值追加结果 var projNameIdCount=""; var projNameCount=""; var subProjNameCount=""; //合并表格 function mergeTable(data,tableId){ //每次合并表格前 都要将全局变量清空 projNameIdCount=""; projNameCount=""; subProjNameCount=""; mergeCells(data.rows,0,data.rows.length,"lch",$('#'+tableId)); //对projName,subProjName,phase的次数进行分割 //去掉末尾的逗号 有时候也可以不用去掉 还是去掉了我这里 projNameIdCount = projNameIdCount.substring(0,projNameIdCount.length-1); projNameCount = projNameCount.substring(0,projNameCount.length-1); subProjNameCount = subProjNameCount.substring(0,subProjNameCount.length-1); //console.log(projNameCount+"+"+subProjNameCount+"+"+phaseCount); var strArr0 = projNameIdCount.split(","); var strArr1 = projNameCount.split(","); var strArr2 = subProjNameCount.split(","); //根据次数进行表格合并 //合并lch var index = 0; for(var i=0;i<strArr0.length;i++){ var count = strArr0[i] * 1; $('#'+tableId).bootstrapTable('mergeCells',{index:index, field:"lch", colspan: 1, rowspan: count}); index += count; } //合并sqdw var index = 0; for(var i=0;i<strArr1.length;i++){ var count = strArr1[i] * 1; $('#'+tableId).bootstrapTable('mergeCells',{index:index, field:"sqdw", colspan: 1, rowspan: count}); index += count; } //合并lxr var index = 0; for(var i=0;i<strArr2.length;i++){ var count = strArr2[i] * 1; $('#'+tableId).bootstrapTable('mergeCells',{index:index, field:"lxr", colspan: 1, rowspan: count}); index += count; } } function mergeCells(datas,startIndex,size,fieldName,target) { //mergeCells(data.rows,0,data.rows.length,"selectqx",$('#'+tableId)); //console.log("startIndex:"+startIndex+"size:"+size+"---合并列:"+fieldName) //声明一个数组计算相同属性值在data对象出现的次数和 //这里不能使用map,因为如果涉及到排序后,相同的属性并不是紧挨在一起,那么后面的次数会覆盖前面的次数,故这里用数组 var sortArr = new Array(); for (var i = startIndex; i < size ; i++) { for (var j = i + 1; j < size; j++) { if (datas[i][fieldName] != datas[j][fieldName]){ //相同属性值不同 if (j - i > 1) { sortArr.push(j - i); i = j - 1; //如果是最后一个元素 把最后一个元素的次数也装进去 if(i == size-1-1){ sortArr.push(1); } }else{ sortArr.push(j - i); //如果j是最后一个元素 把最后一个元素的次数装进去 if(j == size - 1){ sortArr.push(1); } } break; }else { //相同属性值相同 直到最后一次的时候才会装 否则在他们的值不同时再装进去 if (j == size - 1) { sortArr.push(j - i+1); //这里的赋值感觉有点多余 算了现就这个样子吧 不影响功能 i = j; } } } } //遍历数组,将值装追加到对应的字符串后面 for(var prop in sortArr){ /*这里在ie8上运行的时候 出现坑 最好遍历数组不要用for in 这里我用了就懒得换了 下面加上如果prop是indexOf就停止 就解决了ie8出现的问题*/ if(prop == "indexOf"){ continue; } if(fieldName == "lch"){ var count = sortArr[prop] * 1; projNameIdCount += count +","; } if(fieldName == "sqdw"){ var count = sortArr[prop] * 1; projNameCount += count +","; } if(fieldName == "lxr"){ var count = sortArr[prop] * 1; subProjNameCount += count +","; } } for(var prop in sortArr){ if(prop == "indexOf"){ continue; } if(fieldName == "lch"){ startIndex = 0; if(projNameCount.length>0){ var temp = projNameCount.substring(0,projNameCount.length-1); var strArr1 = temp.split(","); for(var i=0;i<strArr1.length;i++){ var count = strArr1[i] * 1; startIndex += count; } } if(sortArr[prop] >1){ mergeCells(datas,startIndex,startIndex+sortArr[prop],"sqdw",target); }else{ //当projName的次数为1就不进入循环 projNameCount +=1+","; subProjNameCount +=1+","; } } if(fieldName == "sqdw"){ //console.log("进入projName--此时开始index-"+startIndex+"--结束index--"+(startIndex+sortArr[prop])*1); startIndex = 0; //subProjName每次进去的startIndex为前面次数的和 if(subProjNameCount.length>0){ //console.log("subProjNameCount-"+subProjNameCount); var temp = subProjNameCount.substring(0,subProjNameCount.length-1); var strArr1 = temp.split(","); for(var i=0;i<strArr1.length;i++){ var count = strArr1[i] * 1; startIndex += count; } } if(sortArr[prop] >1){ mergeCells(datas,startIndex,startIndex+sortArr[prop],"lxr",target); }else{ //当projName的次数为1就不进入循环 subProjNameCount +=1+","; phaseCount +=1+","; } } } }
发表评论
-
简易日历框
2019-03-04 17:34 757优势:直接用就行,不会受子窗口、父窗口样式元素影响。伪代码如下 ... -
清空div追加内容
2019-01-17 09:28 3130伪代码如下: $("#updatezh" ... -
追加div之后,已有div中录入的值没了,咋办?
2018-12-12 17:47 619遇到的问题: var html=$('#zh').html() ... -
图片放大,缩小
2018-12-07 11:38 371伪代码如下: var img = '<img id= ... -
表单文本框取值
2018-12-04 11:06 605伪代码如下: <input type="n ... -
表单取值
2018-11-21 16:12 460表单的不同取值方式: var postData = ... -
js取值失败 或者 赋值失败 总结
2018-11-21 16:09 1583界面信息获取时,若出现js取不到值的现象 或者 赋值失败的现 ... -
js追加内容,样式丢失解决
2018-10-27 11:43 863伪代码如下: <body> . ... -
js文件中引用'js文件'
2018-09-15 10:57 664<div class="iteye-blog ... -
layer
2018-02-22 10:25 325layer相关的,关闭弹出的页面,弹出页面按钮添加以下 ... -
刷新页面
2017-11-14 11:29 320关闭新打开的tab页面,并刷新父页面。 window.o ... -
富文本编辑器使用
2017-11-09 16:58 457伪代码如下: <div class="co ... -
js解码 、java编码
2017-11-09 16:42 897伪代码示例如下: 后端编码 import org.ap ... -
ajaxFileUpload重复提交,出现参数 is not params现象
2017-11-07 09:48 391解决方案,添加清空功能。 ====不起作用, 最后调试a ... -
js控制控件隐藏、赋值,只是显示赋值的内容。
2017-11-06 15:39 365js通过css隐藏录入框控件,并追加赋值显示 // ... -
js正则表达式
2017-09-14 11:01 263正则表达式总结: 前 ... -
js获取当前工程路径
2017-04-12 14:38 681示例:"http://localhost:8 ... -
js动态创建link
2017-04-11 11:41 537jquery写法兼容性不错 <script> ... -
数组、字符串、json转换
2017-03-17 14:55 283数组转字符串(以逗号分割的字符串)var arr = new ... -
js导出excel自动合并行、列
2014-11-12 18:06 2620function Co_Export(formObj,sSi ...
相关推荐
jquery datatable 单元格合并,通过js实现相同内容单元格动态合并!!!jquery datatable 单元格合并,通过js实现相同内容单元格动态合并!!!
基于Jasperreport动态单元格合并模板,支持多层分组排序,支持多分组动态合并单元格,附件中有两组以及大于两组的模板实例。
本js脚本完美的实现了table单元格的合并,合并后犹如交叉表的形式,非常完美,并在其中附带例子可以验证。
JSP Table 单元格合并 javascript
按照项目需求,参考网上资源,实现了VBA宏控制Excel 按行插入和删除的事件处理,插入行后的单元格合并以及实现通过单元格的动态条件公式自动计算功能。
一款基于delphi TStringGrid的表格控件,主要目的是提供一个可以非常简单易用且容易使用的单元格合并表格。 已经实现: 单元格合并 可以支持单元格的合并,使用方法示例: miniGrid.MergeCells(1, 1, 1, 1);//以...
DataGridView合并单元格(纵向合并及横向合并)
demo实例 合并紧挨着的 单元格 通过js实现 希望对大家有帮助
flex的datagrid合并单元格,实现某行、某列的合并,以及多行或者多列的合并。通过MecGrid实现!
el-element中el-table合并单元格 合并列。无限制列合并。通过循环数据源数据获取该列需要合并的行数。
DataGridView单元格合并和二维表头,demo,通过重新封装实现
一般在导出Excel中,在创建工作表sheet后,初始化的sheet中row都是一行一行的,每个单元格都是最小单位,所以问题1什么时候将单元格合并? 方案:先将数据组装成json格式方便插入Excel时进行遍历,接着以巡检项为每...
dbgrideh 实现有条件合并单元格的例子 内含修改的dbgrideh 4.2控件
java excel poi合并单元格
本demo学习python操作mysql与openpyxl实现数据库数据读取写入excel,excel操作实现单元格合并。
任意行列的单元格任意合并,总共有四个过程,分别实现行列的连续单元格合并技术。
在StringGrid控件中实现显示Excel形式的合并单元格效果,也可以用AdvStringGrid,XLGRID等第三方控件,不过要破解比较麻烦。 原理是通过重载 OnDrawCell 事件procedure TForm1.SGDrawCell(Sender: TObject; ACol, ...
编程人员可以通过此方法动态的合并单元格,方便您在操作中动态的合并