EXtjs 合并单元格
来源:互联网 发布:心动网络2018校招 编辑:程序博客网 时间:2024/04/29 19:55
/**
* wujian
* 合并单元格()
* @param {} grid 要合并单元格的grid对象
* @param {} main_col 主参考合并列
* @param {} ref_cols 副参考合并列:为一个数组(如:[2,4,5])
*/
mergeCells : function(grid,main_col,ref_cols){
var arrayTr=document.getElementById(grid.getId()+"-body").firstChild.firstChild.getElementsByTagName('tr');
var trCount = arrayTr.length;
var arrayTd;
var nullDivText = '<div class="FF0000 border:0px;"></div>';
var nullBotton = 'border-bottom: #ededed 0px solid;';
var nullTop = 'border-top:#ededed 0px solid;';
var nullTopBotton = 'border-top:#ededed 0px solid;border-bottom: #ededed 0px solid;';
var mergeObjects = [];
var merge = function(rowspanObj,isMerge){ //定义合并函数
if(rowspanObj.rowspan>1){
if(isMerge) mergeObjects.push(rowspanObj);
Ext.each(rowspanObj,function(obj){
for(var i=0;i<obj.rowspan;i++){
if((obj.tr+i)<trCount){
if(i==0){//设置首行
var firstTd = arrayTr[obj.tr].getElementsByTagName("td");
firstTd[obj.td-1].style.cssText=nullBotton;
if(obj.rowspan>2)
firstTd[obj.td-1].innerHTML = nullDivText;
}else if(i==(Math.round(obj.rowspan/2-1))){//设置居中
var firstTd = arrayTr[obj.tr+i].getElementsByTagName("td");
firstTd[obj.td-1].style.cssText=nullTopBotton;
}else if(i==(obj.rowspan-1)){//设置最后一行
var lastTd = arrayTr[obj.tr+i].getElementsByTagName("td");
lastTd[obj.td-1].innerHTML = nullDivText;
lastTd[obj.td-1].style.cssText=nullTop;
}else{
arrayTd = arrayTr[obj.tr+i].getElementsByTagName("td");
arrayTd[obj.td-1].innerHTML = nullDivText;
arrayTd[obj.td-1].style.cssText=nullTopBotton;
}
}
}
});
}else{
var firstTd = arrayTr[rowspanObj.tr].getElementsByTagName("td");
firstTd[rowspanObj.td-1].style.cssText=nullDivText;
}
};
var spanRows = function(strTr,cols,trCount,isMerge){
var rowspanObj = {}; //要进行跨列操作的td对象{tr:1,td:2,rowspan:5}
var col;
Ext.each(cols,function(colIndex){ //逐列去操作tr
var rowspan = 1;
var divHtml = null;//单元格内的数值
for(var i=strTr;i<trCount;i++){ //i=0表示表头等没用的行
arrayTd = arrayTr[i].getElementsByTagName("td");
for(var j=1;j<arrayTd.length;j++){
arrayTd[j].style.css='x-grid-cell';
}
var cold=0;
col=colIndex+cold;//跳过RowNumber列和check列
if(!divHtml){
divHtml = arrayTd[col-1].innerHTML;
rowspanObj = {tr:i,td:col,rowspan:rowspan};
}else{
var cellText = arrayTd[col-1].innerHTML;
var addf=function(){
rowspanObj["rowspan"] = rowspanObj["rowspan"]+1; //合并一行
if(i==trCount-1){
merge(rowspanObj,isMerge);//执行合并函数
}
};
var mergef=function(){
merge(rowspanObj,isMerge);//执行合并函数
divHtml = cellText;
rowspanObj = {tr:i,td:col,rowspan:rowspan};
};
if(cellText == divHtml){addf();}else{mergef();}
}
}
});
};
//合并第一列
spanRows(0,main_col,trCount,true);
//合并相邻列
if(ref_cols)
mergeObjects.forEach(function(rowspanObj){
spanRows(rowspanObj['tr'],ref_cols,rowspanObj['tr']+rowspanObj['rowspan'],false);
});
}
* wujian
* 合并单元格()
* @param {} grid 要合并单元格的grid对象
* @param {} main_col 主参考合并列
* @param {} ref_cols 副参考合并列:为一个数组(如:[2,4,5])
*/
mergeCells : function(grid,main_col,ref_cols){
var arrayTr=document.getElementById(grid.getId()+"-body").firstChild.firstChild.getElementsByTagName('tr');
var trCount = arrayTr.length;
var arrayTd;
var nullDivText = '<div class="FF0000 border:0px;"></div>';
var nullBotton = 'border-bottom: #ededed 0px solid;';
var nullTop = 'border-top:#ededed 0px solid;';
var nullTopBotton = 'border-top:#ededed 0px solid;border-bottom: #ededed 0px solid;';
var mergeObjects = [];
var merge = function(rowspanObj,isMerge){ //定义合并函数
if(rowspanObj.rowspan>1){
if(isMerge) mergeObjects.push(rowspanObj);
Ext.each(rowspanObj,function(obj){
for(var i=0;i<obj.rowspan;i++){
if((obj.tr+i)<trCount){
if(i==0){//设置首行
var firstTd = arrayTr[obj.tr].getElementsByTagName("td");
firstTd[obj.td-1].style.cssText=nullBotton;
if(obj.rowspan>2)
firstTd[obj.td-1].innerHTML = nullDivText;
}else if(i==(Math.round(obj.rowspan/2-1))){//设置居中
var firstTd = arrayTr[obj.tr+i].getElementsByTagName("td");
firstTd[obj.td-1].style.cssText=nullTopBotton;
}else if(i==(obj.rowspan-1)){//设置最后一行
var lastTd = arrayTr[obj.tr+i].getElementsByTagName("td");
lastTd[obj.td-1].innerHTML = nullDivText;
lastTd[obj.td-1].style.cssText=nullTop;
}else{
arrayTd = arrayTr[obj.tr+i].getElementsByTagName("td");
arrayTd[obj.td-1].innerHTML = nullDivText;
arrayTd[obj.td-1].style.cssText=nullTopBotton;
}
}
}
});
}else{
var firstTd = arrayTr[rowspanObj.tr].getElementsByTagName("td");
firstTd[rowspanObj.td-1].style.cssText=nullDivText;
}
};
var spanRows = function(strTr,cols,trCount,isMerge){
var rowspanObj = {}; //要进行跨列操作的td对象{tr:1,td:2,rowspan:5}
var col;
Ext.each(cols,function(colIndex){ //逐列去操作tr
var rowspan = 1;
var divHtml = null;//单元格内的数值
for(var i=strTr;i<trCount;i++){ //i=0表示表头等没用的行
arrayTd = arrayTr[i].getElementsByTagName("td");
for(var j=1;j<arrayTd.length;j++){
arrayTd[j].style.css='x-grid-cell';
}
var cold=0;
col=colIndex+cold;//跳过RowNumber列和check列
if(!divHtml){
divHtml = arrayTd[col-1].innerHTML;
rowspanObj = {tr:i,td:col,rowspan:rowspan};
}else{
var cellText = arrayTd[col-1].innerHTML;
var addf=function(){
rowspanObj["rowspan"] = rowspanObj["rowspan"]+1; //合并一行
if(i==trCount-1){
merge(rowspanObj,isMerge);//执行合并函数
}
};
var mergef=function(){
merge(rowspanObj,isMerge);//执行合并函数
divHtml = cellText;
rowspanObj = {tr:i,td:col,rowspan:rowspan};
};
if(cellText == divHtml){addf();}else{mergef();}
}
}
});
};
//合并第一列
spanRows(0,main_col,trCount,true);
//合并相邻列
if(ref_cols)
mergeObjects.forEach(function(rowspanObj){
spanRows(rowspanObj['tr'],ref_cols,rowspanObj['tr']+rowspanObj['rowspan'],false);
});
}
0 0
- Extjs grid 合并单元格
- EXtjs 合并单元格
- ExtJs grid合并单元格
- Extjs Grid合并单元格
- ExtJs合并单元格
- ExtJs - grid 合并单元格 跨行跨列
- ExtJs - grid 合并单元格 跨行跨列
- 27、extjs操作用友华表Cell之合并单元格
- 一个基于Extjs 3的支持单元格合并的面板
- 单元格合并
- 合并单元格
- 合并单元格
- 合并单元格
- 合并单元格
- 单元格合并
- 合并单元格
- DataGridView合并单元格 编辑单元格
- extjs grid 单元格背景图
- 2.JavaWeb基础 Tomcat
- RESTful API 设计指南
- MFC调试DOS窗口打印调试信息
- ZOJ1101
- AppWidget基础小结
- EXtjs 合并单元格
- 亚欣集合型风管清洗机器人参与湖南卫视《新闻大求真》栏目录制
- java并发 java7之fork-join框架
- Myisam表锁
- 博客开篇说
- C/C++:友元函数以及友元类的使用总结
- cocos2d-x用友盟社会化分享遇到的问题处理
- C++中的explicit关键字
- MySQL导出所有Index 和 约束