扩展-Easyui Datagrid相同连续列合并扩展(一)
一.autoMergeCellAndCells实现效果
调用方法:
function
onLoadSuccess(data){
$(
this
).datagrid(
"autoMergeCellAndCells"
,[
'productid'
,
'productname'
]);
}
//所有列进行合并操作
//$(this).datagrid("autoMergeCellAndCells");
//指定列进行合并操作
//$(this).datagrid("autoMergeCellAndCells", [
'productid'
,
'productname'
]
);
$(this).datagrid("autoMergeCellAndCells",[
'productid'
,
'productname'
]
);
二.autoMergeCells实现效果
调用方法:
function onLoadSuccess(data){
$(this).datagrid("autoMergeCells",['productid','productname']);
} //所有列进行合并操作
//$(this).datagrid("autoMergeCells");
//指定列进行合并操作
//$(this).datagrid("autoMergeCells",[
'productid'
,
'productname'
]
);
$(this).datagrid("autoMergeCells",[
'productid'
,
'productname'
]
);
三.扩展
$.extend($.fn.datagrid.methods, {
autoMergeCells : function (jq, fields) {
return jq.each(function () {
var target = $(this);
if (!fields) {
fields = target.datagrid("getColumnFields");
}
var rows = target.datagrid("getRows");
var i = 0,
j = 0,
temp = {};
for (i; i < rows.length; i++) {
var row = rows[i];
j = 0;
for (j; j < fields.length; j++) {
var field = fields[j];
var tf = temp[field];
if (!tf) {
tf = temp[field] = {};
tf[row[field]] = [i];
} else {
var tfv = tf[row[field]];
if (tfv) {
tfv.push(i);
} else {
tfv = tf[row[field]] = [i];
}
}
}
}
$.each(temp, function (field, colunm) {
$.each(colunm, function () {
var group = this;
if (group.length > 1) {
var before,
after,
megerIndex = group[0];
for (var i = 0; i < group.length; i++) {
before = group[i];
after = group[i + 1];
if (after && (after - before) == 1) {
continue;
}
var rowspan = before - megerIndex + 1;
if (rowspan > 1) {
target.datagrid('mergeCells', {
index : megerIndex,
field : field,
rowspan : rowspan
});
}
if (after && (after - before) != 1) {
megerIndex = after;
}
}
}
});
});
});
},
autoMergeCellAndCells : function (jq, fields) {
return jq.each(function () {
var target = $(this);
if (!fields) {
fields = target.datagrid("getColumnFields");
}
var cfield = fields[0];
if (!cfield) {
return;
}
var rows = target.datagrid("getRows");
var i = 0,
j = 0,
temp = {};
for (i; i < rows.length; i++) {
var row = rows[i];
j = 0;
var tf = temp[cfield];
if (!tf) {
tf = temp[cfield] = {};
tf[row[cfield]] = [i];
} else {
var tfv = tf[row[cfield]];
if (tfv) {
tfv.push(i);
} else {
tfv = tf[row[cfield]] = [i];
}
}
}
$.each(temp, function (field, colunm) {
$.each(colunm, function () {
var group = this;
if (group.length > 1) {
var before,
after,
megerIndex = group[0];
for (var i = 0; i < group.length; i++) {
before = group[i];
after = group[i + 1];
if (after && (after - before) == 1) {
continue;
}
var rowspan = before - megerIndex + 1;
if (rowspan > 1) {
for(var j=0;j<fields.length;j++){
target.datagrid('mergeCells', {
index : megerIndex,
field : fields[j],
rowspan : rowspan
});
}
}
if (after && (after - before) != 1) {
megerIndex = after;
}
}
}
});
});
});
}
});
扩展-Easyui Datagrid相同连续列合并扩展(一)的更多相关文章
- Easyui Datagrid相同连续列合并扩展(二)
JS: //合并相同数据的单元格 function MergeCells(seletor, rows, fields) { if(rows == null || rows.length == 0 || ...
- Easyui Datagrid相同连续列合并扩展(三)
function MergeCells(seletor, rows, fields) { if(rows == null || rows.length == 0 || fields == null | ...
- jQuery Easyui Datagrid相同连续列合并扩展
/** * author ____′↘夏悸 * create date 2012-11-5 **/$.extend($.fn.datagrid.methods, { autoMergeCells : ...
- EasyUI DataGrid 相同连续列合并
扩展方法:$.extend($.fn.datagrid.methods, { autoMergeCells: function(jq, fields) { return jq.each(functio ...
- Easyui Datagrid相同连续列合Demo之三
效果图: html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- 完美实现保存和加载easyui datagrid自定义调整列宽位置隐藏属性功能
需求&场景 例表查询是业务系统中使用最多也是最基础功能,但也是调整最平凡,不同的用户对数据的要求也不一样,所以在系统正式使用后,做为开发恨不得坐在业务边上,根据他们的要求进行调整,需要调整最多 ...
- (转)扩展jquery easyui datagrid 之动态绑定列和数据
本文转载自:http://blog.csdn.net/littlewolf766/article/details/7336550 easyui datagrid 不支持动态加载列,上次使用的方法是自己 ...
- 扩展easyui.datagrid,添加数据loading遮罩效果代码 --来自网摘收集
//jquery.datagrid 扩展 (function (){ $.extend($.fn.datagrid.methods, { //显示遮罩 loading: function(jq){ r ...
- jQuery扩展easyui.datagrid,添加数据loading遮罩效果代码
//jquery.datagrid 扩展加载数据Loading效果 (function (){ $.extend($.fn.datagrid.methods, { //显示遮罩 loading: fu ...
随机推荐
- java对象的强引用,软引用,弱引用和虚引用
1.强引用 以前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用.如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它.当内存空 间不足,Java虚拟机宁愿抛出Out ...
- 【转】使用python进行多线程编程
1. python对多线程的支持 1)虚拟机层面 Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,暂时无法利用多处理器的优势.使 ...
- 关于ActiveMQ的配置
http://www.cnblogs.com/CopyPaster/archive/2012/04/27/2473179.html
- vagrant box各种命令汇总
最近在研究laravel,中间用到了vagrant 虚拟机管理工具,学习一下他的命令 vagrant box命令 用于管理boxes的命令,比如添加.删除等等. 此命令的功能主要通过以下子命令完成: ...
- 使用 Tmux 强化终端功能
来自 tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需 ...
- 【转帖】阿里金融云:分布式服务注册中心(DSR)
https://www.cloud.alipay.com/docs/middleware/register/index.html 分布式服务注册中心(DSR) 分布式服务注册中心简介 服务注册中心 ( ...
- php简单混淆类加密文件如何解密?
最近在整理单位购买的源码时,发现源码里好多文件都混淆加密了.虽然不解密也不影响使用,但是心里总觉得有些别扭,便试着将加密的文件解密. 首先,百度了一下,看网上是否有现成的混淆类解密工具,搜到了一个ht ...
- Python 列表 max() 方法
描述 Python 列表 max() 方法返回列表元素中的最大值. 语法 max() 方法语法: max(L) 参数 L -- 要返回最大值的列表. 返回值 返回列表元素中的最大值. 实例 以下实例展 ...
- mybatis 映射器
1 映射器 Mapper 是由java接口和 XML 文件共同组成.它的作用如下 1)定义参数类型 2)描述缓存 3)描述 SQL 语句 4)定义查询结果和POJO的映射关系 2 SqlSession ...
- FTPHelper-封装FTP的相关操作
using System; using System.IO; using System.Net; using System.Text; namespace Whir.Software.DataSync ...