EasyUI:EasyUI-DataGrid多行合并实现
1、首先我们<table>增加一个属性data-options="onLoadSuccess:mergeCells",mergeCells是我们对应的JS方法名,意思就是datagrid加载数据成功之后,执行这个mergeCells方法,mergeCells定义如下:
//datagrid加载完后合并指定单元格
function mergeCells(data){
var arr =[{mergeFiled:"SERIALNUM",premiseFiled:"PROJECTID"}, //合并列的field数组及对应前提条件filed(为空则直接内容合并)
{mergeFiled:"PROJECTNAME",premiseFiled:"PROJECTID"},
{mergeFiled:"ORGSTARTTIME",premiseFiled:"PROJECTID"},
{mergeFiled:"ORGUNIT",premiseFiled:"PROJECTID"}
];
var dg = $("#datagrid1"); //要合并的datagrid中的表格id
var rowCount = dg.datagrid("getRows").length;
var cellName;
var span;
var perValue = "";
var curValue = "";
var perCondition="";
var curCondition="";
var flag=true;
var condiName="";
var length = arr.length - 1;
for (i = length; i >= 0; i--) {
cellName = arr[i].mergeFiled;
condiName=arr[i].premiseFiled;
if(isNotNull(condiName)){
flag=false;
}
perValue = "";
perCondition="";
span = 1;
for (row = 0; row <= rowCount; row++) {
if (row == rowCount) {
curValue = "";
curCondition="";
} else {
curValue = dg.datagrid("getRows")[row][cellName];
/* if(cellName=="ORGSTARTTIME"){//特殊处理这个时间字段
curValue =formatDate(dg.datagrid("getRows")[row][cellName],"");
} */
if(!flag){
curCondition=dg.datagrid("getRows")[row][condiName];
}
}
if (perValue == curValue&&(flag||perCondition==curCondition)) {
span += 1;
} else {
var index = row - span;
dg.datagrid('mergeCells', {
index : index,
field : cellName,
rowspan : span,
colspan : null
});
span = 1;
perValue = curValue;
if(!flag){
perCondition=curCondition;
}
}
}
}
}
var arr =[{mergeFiled:"SERIALNUM",premiseFiled:"PROJECTID"}, //合并列的field数组及对应前提条件filed(为空则直接内容合并)
{mergeFiled:"PROJECTNAME",premiseFiled:"PROJECTID"},
{mergeFiled:"ORGSTARTTIME",premiseFiled:"PROJECTID"},
{mergeFiled:"ORGUNIT",premiseFiled:"PROJECTID"}
];
2、是定义要合并哪些列的数组(存对象),数组里的对象有2个属性,mergeFiled:合并列的field名,和premiseFiled:合并前边列的前提条件约束列即只有这个约束列相等时再合并mergeFiled列,如premiseFiled:"",则直接按内容合并,而直接按内容相同与否合并就有一个很大的bug,就是相邻的行即使不应该合并但是内容相同也合并了,这就很容造成表格合并的效果参差不齐不是我们想要的,所以增加了一个premiseFiled属性来约束合并作为前提条件,如只有projectID字段(可甚至否一个字段hidden="true"来隐藏此列)相同的情况下才合并projectName。
var dg = $("#datagrid1"); //要合并的datagrid中的表格id
是获取table的jQuery对象以便后边获取各个行的数据。此方法是对相邻在满足约束字段相同的情况下进行的内容合并,所以查询时要把这些要合并的行“安排”在一起,用排序或者连接查询,分组都可以。如果有个日期字段也想合并的话,单纯的这样是不行的,是合并不了的,调用DataGrid方法获取的json格式的日期是不相同的(很难相同),这时需要用到json日期的格式化改成我们常见的格式再比较,如我所注释着的代码:
/* if(cellName=="ORGSTARTTIME"){//特殊处理这个时间字段
curValue =formatDate(dg.datagrid("getRows")[row][cellName],"");
} */
如果有checkbox的话,你想对应的更改前边的checkbox,也想进行合并,你可以把checkbox列的field属性设置为合并的列的值如projectId,这样把checkbox列也写入到上边JS方法中的数组中,那么就能起到合并checkbox最用!
本文转载自http://blog.csdn.net/chenleixing/article/details/44229359,本转载主要为分享技术知识,如有侵权,请联系转载人及时删除!
EasyUI:EasyUI-DataGrid多行合并实现的更多相关文章
- 给Jquery easyui 的datagrid 每行增加操作链接(转)
http://www.thinkphp.cn/code/207.html 通过formatter方法给Jquery easyui 的datagrid 每行增加操作链接我们都知道Jquery的EasyU ...
- easyUI的datagrid每行数据添加操作按钮的方法
今天做项目的时候,想在easyui的datagrid每一列数据后边都加上一个操作按钮,一开始想在后台拼接字符串用JSON传回,但是我测试之后发现这个方法不管用,在网上搜索了一下,整理如下: 其实要加一 ...
- 给Jquery easyui 的datagrid 每行添加操作链接
背景 我们都知道Jquery的Easy-UI的datagrid能够加入而且自己定义Toolbar,这样我们选择一行然后选择toolbar的对应button就能够对这行的数据进行操作.但实际项目里我们可 ...
- EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件
有时候在行编辑的时候,一个编辑框的值要根据其它编辑框的值进行变化,那么可以通过在开启编辑时,找到特定的Editor,为其添加事件 // 绑定事件, index为当前编辑行 var editors = ...
- Easyui的datagrid的行编辑器Editor中添加事件(修改某个单元格带出其他单元格的值)
项目中有个datagrid需要编辑行时,用到Editor的属性,那么如何添加一个事件 问题:同一个编辑行中的某个单元格值改变时,修改其他单元格的值 页面用到的datagrid <table id ...
- (原创)EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件
有时候在行编辑的时候,一个编辑框的值要根据其它编辑框的值进行变化,那么可以通过在开启编辑时,找到特定的Editor,为其添加事件 // 绑定事件, index为当前编辑行 var editors = ...
- EasyUI之dataGrid的行内编辑
$(function () { var datagrid; //定义全局变量datagrid var editRow = undefined; //定义全局变量:当前编辑的行 datagrid = T ...
- EasyUI的datagrid表格行高度增加
这里以easyui的default样式为例: 找到easyui--->themes-->default-->easyui.css-->Ctrl+F找到.datagrid-row ...
- datagrid指定行合并导出
导出代码: public void GridViewToExcel(GridView ctrl, string FileType, string FileName) { HttpContext.Cur ...
随机推荐
- strTemp.Format ("%.*lf",3,600.0);
CString strTemp; strTemp.Format ("%.*lf",3,600.0); 这句话的含义?求指教 优质解答 这就是一个格式化输出,分号之前的CStri ...
- poi解析Excel(转)
下面是本文的项目结构: 项目中所需要的jar文件: 所用的Excel数据(2003-2007,2010都是一样的数据) 运行效果: /Excel2010/src/com/b510/common/Com ...
- 11_listview入门
listview是在安卓开发当中很常用的API. 以垂直滚动的列表的方式展示条目的控件. ListAdapter是一个桥梁,给ListView提供数据的.数据是由适配器来进行提供的.Adapter是数 ...
- (转)apache2.2.x+tomcat7.0.x集群+…
apache http server下载地址 http://httpd.apache.org/download.cgi#apache22 这里下载的是httpd-2.2.21-win32-x86-op ...
- string行读入&&文件输入
普通读入的时候会以空格作为分隔符 直接用cin>>s读入,此时可以直接处理文件尾的情况 text代码: #include <iostream>#include <cstd ...
- pyjsonrpc模块使用
pyjsonrpc模块的远程过程调用方法. # -*- coding:utf-8 -*- #!/usr/bin/env python2.7 # @Author : tianbao # @Contact ...
- Spring Security 表达式(Expressions) - hasRole示例
1.概述 Spring Security使用强大的Spring Expression Language(SpEL)提供各种各样的表达式.大多数这些Security表达式是针对上下文对象(当前经过身份验 ...
- 反向传播(BP)算法理解以及Python实现
全文参考<机器学习>-周志华中的5.3节-误差逆传播算法:整体思路一致,叙述方式有所不同: 使用如上图所示的三层网络来讲述反向传播算法: 首先需要明确一些概念, 假设数据集\(X=\{x^ ...
- 小白入门AI教程:教你快速搭建大数据平台『Hadoop+Spark』
Apache Spark 简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源 ...
- 利用Hough变换识别图像中的直线
引入 近期看到2015年数学建模A题太阳影子定位中的第四问,需要根据附件中视频里的直杆的太阳影子的变化确定拍摄地点.其实确定拍摄地点这个问题并不是十分困难,因为有前三问的铺垫,我们已经得出了太阳影子长 ...