ExtJs合并单元格

╰半橙微兮° 2022-07-21 12:19 529阅读 0赞

前端框架ExtJS4.0

下图为合并后效果:

![Image 1][]

最近项目中做Grid显示时,需要将单元格分类然后按一定要求给合并,如果单单是合并表头,这个实现很简单,但是现在要求的合并单元格,这就需要直接去操作HTML表格标签了,进行rowspan,colspan之类;下面是具体代码:

注:grid为要合并的表单,row为合并的开始行,col为合并的开始列,type[‘row’,’col’]要合并列或者行,num合并的行数或者列数

function span(grid, row, col, type, num) {
switch (type) {
case ‘row’:
tds = Ext.get(grid.view.getNode(row)).query(‘td’);
Ext.get(tds[col]).set({rowspan: num});
Ext.get(Ext.get(tds[col])).setStyle({‘vertical-align’: ‘middle’});
for (i = row + 1; i < row + num; i++) {
Ext.get(Ext.get(grid.view.getNode(i)).query(‘td’)[col]).destroy();
}
break;
case ‘col’:
tds = Ext.get(grid.view.getNode(row)).query(‘td’);
Ext.get(tds[col]).set({colspan: num});
Ext.get(Ext.get(tds[col])).setStyle({‘vertical-align’: ‘middle’});
for (i = row + 1; i < row + num; i++) {
Ext.get(tds[col+1]).destroy();
}
break;
}
}

监听load:根据自己的业务逻辑来设计代码

load: function(){

//遍历store
var models = compareFinceStore.data;
var length = models.length;
for (var index = 0; index < length; index++) {//行
var rows = 0;
var record = models.get(index);
var obj = record.get(‘saleOrderNumber’);

  1. for (var index2 = index; index2 < models.length; index2++) \{ l//匹配每一行相同列
  2. var record2 = models.get(index2);
  3. if (obj == record2.get('saleOrderNumber')) \{
  4. rows++;
  5. \} else \{
  6. continue;
  7. \}
  8. \}

//合并15,14,13,10,3,2列 注意:这里如果你是顺序合并的话或出现合并后剩余数据挤到下一列的问题,需要倒序进行合并解决问题
var cols = [15,14,13,10,3,2];
if (rows > 1) {
for(var i=0;i<cols.length;i++){
span(compareFinceReport_grid, index, cols[i], ‘row’, rows);
}
index += rows - 1;//直接跳转到合并后的下一行
}
}

}

[Image 1]:

发表评论

表情:
评论列表 (有 0 条评论,529人围观)

还没有评论,来说两句吧...

相关阅读

    相关 填充合并单元

    在空白工作簿里单击【数据】→【新建查询】→【从工作簿】, 找到要填充合并单元格的文件,根据提示导入数据查询编辑器。 按住Ctrl键不放,单击要处理的列标,依次单击【转换】→

    相关 html 合并单元

    合并单元格学习: 快捷生成表格 table>tr4>td5 加tab,生成四行五列的表格 合并单元格:其中一个单元格占据其单元格,然后