`
zengshaotao
  • 浏览: 755904 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

获取easyui合并表头的信息

 
阅读更多

/**

 * 获得表格的head和val

 * @param grid

 * @returns {___anonymous51675_51790}

 */

function getGridHeadAndValInfo(grid) {

    var headInfo = "";

    var valInfo = "";

    var gridOptions = grid.datagrid("options");

    //活动列标题有几行(活动列标题和冻结列标题行数一致)

    var rowNum = gridOptions.columns.length;

    var fColRowNum = gridOptions.frozenColumns.length;

    var fCol_index = -1;

    var fCol_max_index = 0;//记录冻结列每行共有多少列

 

    /*获取冻结的列*/

    if (fColRowNum > 0 && fColRowNum == rowNum) {

        var arr_frozenColumn = gridOptions.frozenColumns;

        for (var i = 0; i < rowNum; i++) {

            var fCol_num = 0;

            var ele_frozenColumn = arr_frozenColumn[i];

            var fColColNum = ele_frozenColumn.length;

            for (var j = 0; j < fColColNum; j++) {

                var fColumnOption = grid.datagrid("getColumnOption", ele_frozenColumn[j].field);

                //不输出的列不导出

                if (!isEmpty(fColumnOption.output) && !fColumnOption.output) {

                    continue;

                }

                //隐藏的列不导出

                if (!isEmpty(fColumnOption.hidden) && fColumnOption.hidden) {

                    continue;

                }

                //子表扩展列不输出

                if ("_expander" == fColumnOption.field){

                continue;

                }

                

                //拼接行起止数

                var start_row_i, end_row_i, start_cell_i, end_cell_i;

                if (isEmpty(ele_frozenColumn[j].rowspan)) {//单行

                start_row_i = i;

                end_row_i = i;

                    //记录非第一行且有合并列行的开始列下标

                    if (undefined != ele_frozenColumn[j].colspan && fCol_index == -1) {

                        fCol_index = fCol_num;

                    }

                } else {//多行

                start_row_i = i;

                end_row_i = i + ele_frozenColumn[j].rowspan - 1;

                }

                //拼接列起止数

                if (fColColNum < fCol_max_index) { //第二行起,列的起始值可能不为0

                    if (isEmpty(ele_frozenColumn[j].colspan)) {//单列

                    start_cell_i = fCol_index + fCol_num;

                    end_cell_i = fCol_index + fCol_num;

                        fCol_num++;

                    } else {//多列

                    start_cell_i = fCol_index + fCol_num;

                    end_cell_i = fCol_index + fCol_num + ele_frozenColumn[j].colspan - 1;

                        fCol_num += ele_frozenColumn[j].colspan;

                    }

                } else {

                    if (isEmpty(ele_frozenColumn[j].colspan)) {//单列

                    start_cell_i = fCol_num;

                    end_cell_i = fCol_num;

                        fCol_num++;

                    } else {//多列

                    start_cell_i = fCol_num;

                    end_cell_i = fCol_num + ele_frozenColumn[j].colspan - 1;

                        fCol_num += ele_frozenColumn[j].colspan;

                    }

                }

                

                //加入属性列,要导出的值列

                if(!isEmpty(fColumnOption.field)){

                valInfo += ";" + fColumnOption.field;

                }

                headInfo += ";" + fColumnOption.title.replace(/<.*?>/ig, "") + "," + start_row_i + "," + start_cell_i + "," + end_row_i + "," + end_cell_i;

            }

            if (i == 0) {

                //记录冻结列的最后列下标,所有冻结行的最后列数是一致的,故取第一行的列数即可

                fCol_max_index = fCol_num;

            }

        }

    }

    /*获取活动列*/

    var arr_column = gridOptions.columns;

    var col_max_index = 0;//每行有多少列

    var col_index = -1;

    for(var i = 0; i < rowNum; i++){

        var column_num = fCol_max_index;//活动列的起始列

        var ele_column = arr_column[i];

        var colColNum = ele_column.length;

        for (var j = 0; j < colColNum; j++) {

            var columnOption = grid.datagrid("getColumnOption", ele_column[j].field);

            //不输出的列不导出

            if(!isEmpty(columnOption.output) && !columnOption.output){

                continue;

            }

            //隐藏的列不导出

            if(!isEmpty(columnOption.hidden) && columnOption.hidden){

                continue;

            }

            //子表扩展列不输出

            if ("_expander" == columnOption.field){

            continue;

            }

 

            var start_row_i, end_row_i, start_cell_i, end_cell_i;

            //拼接行起止数

            if(isEmpty(ele_column[j].rowspan)){//单行

            start_row_i = i;

            end_row_i = i;

                //记录非第一行且有合并列行的开始列下标

                if(undefined != ele_column[j].colspan && col_index == -1){

                    col_index = column_num - fCol_max_index;

                }

            }else {//多行

            start_row_i = i;

            end_row_i = i + ele_column[j].rowspan - 1;

            }

            //拼接列起止数

            if(colColNum < col_max_index){//说明起始列不是从头开始

                if(isEmpty(ele_column[j].colspan)){

                start_cell_i = column_num + col_index;

                end_cell_i = column_num + col_index;

                    column_num ++;

                }else {

                start_cell_i = column_num + col_index;

                end_cell_i = column_num + col_index + ele_column[j].colspan - 1;

                    column_num += ele_column[j].colspan;

                }

            }else {//说明起始列从头开始,并且不会有合并列

                if(isEmpty(ele_column[j].colspan)){

                start_cell_i = column_num;

                end_cell_i = column_num;

                    column_num ++;

                }else {

                start_cell_i = column_num;

                end_cell_i = column_num + ele_column[j].colspan - 1;

                    column_num += ele_column[j].colspan;

                }

            }

            

            //加入属性列,要导出的值列

            if(!isEmpty(columnOption.field)){

            valInfo += ";" + columnOption.field;

            }

            headInfo += ";" + columnOption.title.replace(/<.*?>/ig, "") + "," + start_row_i + "," + start_cell_i + "," + end_row_i + "," + end_cell_i;

        }

        if(i == 0){//记录活动列的总列数

            col_max_index = column_num - fCol_max_index;

        }

    }

 

    return {

    headInfo: headInfo.substring(1, headInfo.length),

    valInfo: valInfo.substring(1, valInfo.length)

    };

}

 

/**

 * 判断参数是否为空

 * @param val 要判断的参数

 * @returns 为空为true,不为空为false

 */

function isEmpty(val){

    if(typeof val == "undefined"){

        return true;

    }

    if(typeof val== "string" && val.constructor == String){

        if("" == val){

            return true;

        }else{

            return false;

        }

    }

    if(isArray(val)){

        if(val.length <= 0){

            return true

        }        

    }

    if(null == val){

        return true;

    }

    return false;

}

 

 

/**

 * 判断参数是否为数组

 * @param obj

 */

function isArray(obj){

    return Object.prototype.toString.call(obj)=='[object Array]';

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics