- 浏览: 66454 次
- 性别:
- 来自: 济南
文章分类
最新评论
效果图:查看附件
伪代码如下:
伪代码如下:
$('#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 811优势:直接用就行,不会受子窗口、父窗口样式元素影响。伪代码如下 ... -
清空div追加内容
2019-01-17 09:28 3187伪代码如下: $("#updatezh" ... -
追加div之后,已有div中录入的值没了,咋办?
2018-12-12 17:47 690遇到的问题: var html=$('#zh').html() ... -
图片放大,缩小
2018-12-07 11:38 412伪代码如下: var img = '<img id= ... -
表单文本框取值
2018-12-04 11:06 651伪代码如下: <input type="n ... -
表单取值
2018-11-21 16:12 499表单的不同取值方式: var postData = ... -
js取值失败 或者 赋值失败 总结
2018-11-21 16:09 1691界面信息获取时,若出现js取不到值的现象 或者 赋值失败的现 ... -
js追加内容,样式丢失解决
2018-10-27 11:43 947伪代码如下: <body> . ... -
js文件中引用'js文件'
2018-09-15 10:57 705<div class="iteye-blog ... -
layer
2018-02-22 10:25 371layer相关的,关闭弹出的页面,弹出页面按钮添加以下 ... -
刷新页面
2017-11-14 11:29 367关闭新打开的tab页面,并刷新父页面。 window.o ... -
富文本编辑器使用
2017-11-09 16:58 510伪代码如下: <div class="co ... -
js解码 、java编码
2017-11-09 16:42 941伪代码示例如下: 后端编码 import org.ap ... -
ajaxFileUpload重复提交,出现参数 is not params现象
2017-11-07 09:48 427解决方案,添加清空功能。 ====不起作用, 最后调试a ... -
js控制控件隐藏、赋值,只是显示赋值的内容。
2017-11-06 15:39 404js通过css隐藏录入框控件,并追加赋值显示 // ... -
js正则表达式
2017-09-14 11:01 292正则表达式总结: 前 ... -
js获取当前工程路径
2017-04-12 14:38 719示例:"http://localhost:8 ... -
js动态创建link
2017-04-11 11:41 598jquery写法兼容性不错 <script> ... -
数组、字符串、json转换
2017-03-17 14:55 324数组转字符串(以逗号分割的字符串)var arr = new ... -
js导出excel自动合并行、列
2014-11-12 18:06 2757function Co_Export(formObj,sSi ...
相关推荐
例如,我们可以使用递归算法来实现纵向单元格合并,或者使用 Dynamic Programming来实现单元格合并等。这些算法可以根据实际情况选择合适的实现方法。 在Winform下实现DataGridView单元格合并可以使用多种方法,...
winform DataGridView 设置 单元格合并 源码 实现多维表头
2. **自定义模板字段**:为了实现单元格合并,通常需要使用TemplateField。通过TemplateField,我们可以自定义每一行的显示样式,包括合并单元格。 3. **判断与合并**:在RowDataBound事件中,你可以检查每行的数据...
在这个特定的示例中,“WPF GridControl 单元格合并”指的是如何在GridControl中实现单元格的合并,以创建更复杂和有组织的布局。单元格合并通常用于当一组数据需要跨多行或多列显示时,例如,汇总信息或者创建带有...
c# winform ===datagridview 单元格合并 c# winform ===datagridview 单元格合并 c# winform ===datagridview 单元格合并
本主题将深入探讨如何利用JasperReport实现动态单元格合并,支持多层分组排序和多分组动态合并单元格。 首先,我们要理解JasperReport的基本概念。JasperReport是一个基于Java的报告设计库,它允许开发者通过JRXML...
标题提到的“DataGrid简单实现合并单元格”,实际上是指在不真正合并单元格的情况下,通过自定义头模板和单元格模板来模拟单元格合并的效果。下面,我们将深入探讨如何实现这一功能。 首先,理解DataGrid的基本结构...
要启用单元格合并,我们需要利用其自定义的回调函数和DOM操作。 1. **初始化Datatable**: 首先,我们需要在HTML中创建一个表格,并在JavaScript中初始化DataTable。设置基本参数,如数据源、列定义等: ```html...
在本文中,我们将深入探讨如何在GridControl中实现单元格合并。 首先,了解GridControl的基本结构至关重要。GridControl由一系列列(Columns)和行(Rows)组成,每个单元格是列和行的交叉点。单元格合并涉及将一个...
### JSP Table 单元格合并 在网页开发中,表格是展示...综上所述,通过结合 JSP 和 JavaScript 技术,我们可以有效地实现在动态生成的表格中进行单元格合并的功能。这不仅提升了用户体验,也让数据呈现更加直观有序。
本示例"qt6单元格合并WidgetTableDemo"显然是关于如何在Qt6中使用`QWidget`创建一个表格,并且涉及到如何合并单元格以实现更复杂的布局和展示。下面我们将深入探讨相关的知识点。 1. **QWidget和QTableWidget**: ...
在提供的压缩包文件中,可能包含了实现上述功能的示例代码,通过研究这些代码,你可以进一步了解和掌握`DataGridView`的单元格合并和二维表头的创建。在实际应用中,根据项目需求,可以进行适当的调整和优化。记住,...
本话题聚焦于LayUI中的Table组件,特别是如何实现相同参数的单元格合并功能,这在展示数据时能有效提高信息的可读性和美观性。 LayUI Table的单元格合并功能,主要是通过`parseData`方法和自定义模板来实现的。当...
DevExpress GridControl是一款...通过以上知识点,你应该能够理解和实现DevExpress GridControl在版本15及以上中的单元格合并功能。但请注意,实际应用中可能需要结合具体业务需求进行调整,确保合并规则满足实际场景。
本js脚本完美的实现了table单元格的合并,合并后犹如交叉表的形式,非常完美,并在其中附带例子可以验证。
DBGrid EhPro(通常简称为DBGridEh)是一个增强版的DBGrid,提供了更多的特性和自定义选项,包括单元格合并。 描述中提到的“dbgrideh 实现有条件合并单元格的例子”意味着我们将探讨如何利用DBGridEh控件的特性来...
这个"DataGridView单元格合并.rar"文件很可能是包含一个示例项目或者代码片段,教我们如何在C#环境下实现`DataGridView`的单元格合并功能,特别是针对WinForms应用。 单元格合并通常涉及到两种类型:行头合并和列头...
实现GridControl的单元格合并,主要涉及两个关键部分:GridView对象和条件判断。GridView是GridControl的核心组件,负责处理数据源和显示逻辑。首先,我们需要启用GridView的AllowMergeCells属性,使其具备合并...
当表达式返回`false`时,对应的单元格将不打印,使得与其相邻的单元格合并。 3. **条件判断表达式**:`printWhenExpression`通常会包含一个Java表达式,这个表达式可以根据数据字段的值来决定是否合并。例如,如果...
通过上述代码片段,我们可以看到在DataGridView中实现单元格合并的过程不仅涉及到逻辑判断,还涉及到精细的绘图操作。正确的实现能够极大地提升数据展示的效果,使用户界面更加友好和直观。然而,这也意味着开发者...