extjs4 grid合并列和合并行
来源:互联网 发布:流体力学软件fluent 编辑:程序博客网 时间:2024/06/05 16:22
惯例先吐槽:之前用过几次grid合并行的功能,都是直接在网上找的代码复制使用,功能实现了就是一直没理解很复杂。今天要用到grid合并列的功能,网上找了几遍没找到代码,无奈之下决定参考合并行的方法写个合并列的,在不断调式的过程中终于明白了那个方法的思路,然后发现合并列原来简单多了,于是顺顺利利地写出了合并列的方法,越看越满意,如此简洁易懂啊,于是决定改改合并行的方法了,这一改就发现原来合并行也是一样的简单啊,最后就写出了简洁版的合并行、合并列。二者可以合二为一,但是这样更灵活些,该合并的不该合并的无论多复杂多调几次就都实现了,用过的场景多了自然就明白我的意思,实在是没法解释。
正文从这里开始
使用之前先理解下html中table是如何合并行和列的
有了这些基本的html知识就很容易理解下面的代码了(extjs4.2)
/** * grid合并列 * @调用示例 grid.store.on('load',function(){mergeCells(grid,[0,1,2])}); * @param {} grid * @param {} cols 需要合并列的列号集合[0,1,2] */ mergeCells: function(grid,cols) { var arrayTr = document.getElementById(grid.getId() + "-body").firstChild.firstChild.lastChild.getElementsByTagName('tr'); var removeObjs = []; var spanTd = null; Ext.each(arrayTr,function(tr){ spanTd = null; var arrayTd=tr.getElementsByTagName("td"); Ext.each(cols,function(cellIndex){ var currTd=arrayTd[cellIndex]; if(!spanTd){ spanTd = currTd; }else{ if(currTd.innerHTML == spanTd.innerHTML){ spanTd.colSpan=eval(spanTd.colSpan)+1; spanTd.style.fontWeight = "bold"; removeObjs.push(currTd); }else{ spanTd = currTd; } } }); }); Ext.each(removeObjs,function(obj){ obj.style.display = 'none'; }); }, /** * grid合并行 * @调用示例 grid.store.on('load',function(){mergeRows(grid,[1,3,5])}); * @param {} grid * @param {} cols 需要合并行的列号集合[1,3,5] */ mergeRows: function(grid,cols){ var arrayTr = document.getElementById(grid.getId() + "-body").firstChild.firstChild.lastChild.getElementsByTagName('tr'); var removeObjs = []; var spanTd = null; Ext.each(cols,function(cellIndex){ spanTd = null; Ext.each(arrayTr,function(tr){ var arrayTd=tr.getElementsByTagName("td"); var currTd=arrayTd[cellIndex]; if(!spanTd){ spanTd=currTd; }else{ if(currTd.innerHTML == spanTd.innerHTML){ spanTd.rowSpan=eval(spanTd.rowSpan)+1; spanTd.style.fontWeight = "bold"; removeObjs.push(currTd); }else{ spanTd = currTd; } } }); }); Ext.each(removeObjs,function(obj){ obj.style.display = 'none'; }); },
grid.store.on('load',function() {
me.mergeRows(grid, [0]);
me.mergeCells(grid,[0,1,2]); //下图中的test和test2列内容都是空,但是不会被合并,没在数组中传进去的列都不会被合并
});
效果图如下(粗体字都是合并的内容)
阅读全文
0 0
- extjs4 grid合并列和合并行
- ExtJS4 grid合并单元格
- 关于Extjs4 grid 合并行
- Extjs4 grid合并行单元格
- ExtJs4 - grid 合并单元格 跨行跨列
- ExtJs4 - grid 合并单元格 跨行跨列
- Extjs4 grid 列宽问题
- extjs4 之 Grid 列编辑
- ExtJS4 grid添加按钮列
- Extjs4 grid根据model自动生成列
- Extjs4 grid动态获取列的实现
- extjs4.2 Grid隐藏某列
- Oracle 合并行,合并列
- extjs4.2 grid 合并单元格并居中显示
- Extjs 4.0 Grid 表格列合并代码
- kendou grid 合并列和行
- extjs4 grid 列根据内容长度自动换行
- Extjs4 在Grid列中加入progress bar
- 【dp专题1】hdu1087最大上升子段和 E
- 119. Pascal's Triangle II
- ios 限制UIButton点击频率
- C++类型转换操作符---补充(8)《Effective C++》
- extends 继承
- extjs4 grid合并列和合并行
- 【并查集】OJ_0003 A Bug
- Lotto
- AmazeUI图片轮播
- Android中日历读写操作
- SVN忘记密码
- 黎活明给程序员的忠告
- 第八章:Django开发中表单认识
- 自定义注解