Extjs 3.4 同值合并

摘自:http://www.cnblogs.com/kunpengit/archive/2012/11/13/2768239.html/**
  * grid gridPanel 需要合并的表格
  * rowOrCol   合并行还是列 需要合并的列(dateIndex)
  *borderStyle  样式
  **/
function gridSpan(grid, rowOrCol,colName, borderStyle) {
    var array1 = new Array();
    var count1 = 0;
    var count2 = 0;
    var index1 = 0;
    var index2 = 0;
    var aRow = undefined;
    var preValue = undefined;
    var firstSameCell = 0;
    var allRecs = grid.getStore().getRange();
    if (rowOrCol == "row") {
        count1 = grid.getColumnModel().getColumnCount();
        count2 = grid.getStore().getCount();
    } else {
        count1 = grid.getStore().getCount();
        count2 = grid.getColumnModel().getColumnCount();
    }
    count1 = 2; // 对第二列合并
    for (i = 1; i < count1; i++) {
        preValue = undefined;
        firstSameCell = 0;
        array1[i] = new Array();
        for (j = 0; j < count2; j++) {
            if (rowOrCol == "row") {
                index1 = j;
                index2 = i;
            } else {
                index1 = i;
                index2 = j;
            }
            if (allRecs[index1].get(colName) == preValue) {
                allRecs[index1].set(colName, " ");
                array1[i].push(j);
                //alert(i + "\r\n"+j);
                if (j == count2 - 1) {
                    var index = firstSameCell + Math.round((j + 1 - firstSameCell) / 2 - 1);
                    if (rowOrCol == "row") {
                        allRecs[index].set(colName, preValue);
                    } else {
                        allRecs[index1].set(grid.getColumnModel().getColumnId(index), preValue);
                    }
                }
            } else {
                if (j != 0) {
                    var index = firstSameCell + Math.round((j + 1 - firstSameCell) / 2 - 1);
                    if (rowOrCol == "row") {
                        allRecs[index].set(colName, preValue);
                    } else {
                        allRecs[index1].set(grid.getColumnModel().getColumnId(index), preValue);
                    }
                }
                firstSameCell = j;
                preValue = allRecs[index1].get(colName);
                allRecs[index1].set(colName, " ");
                if (j == count2 - 1) {
                    allRecs[index1].set(colName, preValue);
                }
            }
        }
    }
    grid.getStore().commitChanges();//添加所有分隔线
    for (i = 0; i < grid.getStore().getCount(); i++) {
        for (j = 0; j < grid.getColumnModel().getColumnCount(); j++) {
            aRow = grid.getView().getCell(i, j);
            aRow.style.borderTop = borderStyle;
            aRow.style.borderLeft = borderStyle;
        }
    }//去除合并的单元格的分隔线
    for (i = 1; i < array1.length; i++) {
        for (j = 0; j < array1[i].length; j++) {

            if (rowOrCol == "row") {
                aRow = grid.getView().getCell(array1[i][j], i);
                aRow.style.borderTop = ‘none‘;
            } else {
                aRow = grid.getView().getCell(i, array1[i][j]);
                aRow.style.borderLeft = "none";
            }
        }
    }
};

//在执行load的时候加载
ds_Custom.on(‘load‘,function(){
	 gridSpan(gpCustom, ‘row‘,"cname",  ‘1px solid #DDDDDD‘);
	});

/*与表头对齐*/
.x-grid3-row td,.x-grid3-summary-row td {
padding-right: 0px;
padding-left: 0px;
padding-top: 0px;
padding-bottom: 0px;
}

注:如果合并的行不想显示网格的话,请在网页的css里面加上 下面的样式参数

  

/*去掉行间空白*/
.x-grid3-row {
border-right-width: 1px;
border-left-width: 1px;
border-top-width: 1px;
border-bottom-width: 1px;
}

  

时间: 2024-10-23 09:22:34

Extjs 3.4 同值合并的相关文章

extjs 同值合并

Extjs 报表同值合并方法 做出如下图效果的报表: 核心函数:用的时候添加进去就行 //地市名称相同的列合并 function gridSpan(grid, rowOrCol,colName, borderStyle) { var array1 = new Array(); var count1 = 0; var count2 = 0; var index1 = 0; var index2 = 0; var aRow = undefined; var preValue = undefined;

Extjs combobox设置默认值

转载:http://www.54mask.com/extjs-combobox-default-value.html 相信很多人都遇到了在ExtJS框架中设置combo组件默认值的需求,ExtJS框架并没有提供现成的配置项或者方法来解决此问题,本人认为主要是因为此种需求的应用场景有限且很难达到适应于不同场景的实现. combo组件的设值其实很简单: 1 var getRecruitmentName = new Ext.data.JsonStore({ 2 url: '',--后台地址 3 bas

Extjs Combo赋默认值

1.错的例子 sexCombo.on("afterrender", function() {     sexCombo.setValue(sexStore.getAt(0).data.code); }); 我不知道在某些情况下是否可以,但是我的combo的store是这样赋值的 /// <summary> /// 查看范围的下拉框列表 /// </summary> /// <returns></returns> public JsonRe

php将一个二维数组按照某个字段值合并成一维数组,如果有重复则将重复的合并成二维数组

版权声明:本文为博主原创文章,未经博主允许不得转载. 最近工作中碰到一个问题,用PHP将一个二维数组按照二维数组中的各个项中的某个特定字段值合并成一维数组,如果有重复则将重复的合并成二维数组,生成的二维数组的第一维的键是特定字段的值,二维的键可以是随机索引,也可以是其中的另一个字段的值.其实这个需求经常会在工作中碰到,只是碰到的时候一个有重复的就直接用之前的覆盖后面的或者用之后的覆盖之前的,这样很容易就可以处理了.很少碰到这种有一维数组又有二维数组的情况,先上代码: $a = array( 0

php 按列值合并数据

/* * PHP按值合并数组 * */ function my_array_merge(&$array1, &$array2) { $result = Array(); foreach($array1 as $key => &$value) { $result[$key] = array_merge($value, $array2[$key]); } return $result; }

python 多级字典值合并

python 多级字典值合并: #!/bin/env python import os,sys,re import cStringIO f=open('/tmp/3.txt') ''' /tmp/3.txt content: 148616  '192.168.0.127:8080'    0.157   {'200': 130000, '206': 250, '301': 90, '302': 6698, '304': 6018, '406': 5} 148616  '192.168.0.127

PHP按值合并数组

1 /** 2 * PHP按值合并数组 3 * 4 */ 5 function my_array_merge(&$array1, &$array2) { 6 $result = Array(); 7 foreach($array1 as $key => &$value) { 8 $result[$key] = array_merge($value, $array2[$key]); 9 } 10 return $result; 11 }

JavaScript中Object值合并方法

前言:在日常开发工作中我们可能会遇到js中对象中所有值的复制工作,也有可能是通过electron开发客户端,改版时候面临到的设置合并问题.那么本文将对此做一个简要解决方案的叙述. 介绍:比如有obj1, obj2,我们需要将obj1中的所有与obj2中相同字段相同深度的值copy给obj2,并且需要保持obj2字段结构不变,调用一下方法即可(采用ES6写法). 1 /** 2 * 将src中的数据copy到dist中,并保留dist的结构 3 * @param src 4 * @param di

mysql分组查询时,讲多个值合并在一行显示

mysql根据字段进行分组查询时,相同字段的数据,只会显示一个,如果要想让这个字段的所有数据,显示在一行里,可以在查询时用GROUP_CONTAT函数,默认数据合并以逗号,分开