`
zengshaotao
  • 浏览: 786678 次
  • 性别: 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]';

}

分享到:
评论

相关推荐

    DataGrid表头合并和单元格内容合并-升级版

    这个“DataGrid表头合并和单元格内容合并-升级版”主题主要聚焦于如何在DataGrid中实现复杂的表头和单元格合并功能,以适应多层结构的数据展示需求。 首先,我们要理解在DataGrid中进行表头合并的意义。通常,当...

    Easyui-DataGrid表头拖动效果

    UI设计在一个系统中的重要性是不容忽视的,我们开发人员要做到:让用户去控制...给你的Easyui-DataGrid 表头添加一点料吧 Easyui-Datagrid—表头灵活显示http://blog.csdn.net/u010293698/article/details/47956865

    easyui的动态表头

    文件主要是关于easyui的动态表头,代码主要是js部分,

    jquery-easyui拓展之datagrid复合表头列锁定/解锁和列隐藏/显示

    http://blog.csdn.net/tianxiawudi0720/article/details/47401399

    EasyUI DataGrid过滤用法实例

    在这个"EasyUI DataGrid 过滤用法实例"中,我们将深入探讨如何利用 EasyUI 的 DataGrid 组件实现数据过滤功能,帮助用户更高效地查找和管理表格中的信息。 首先,`datagrid-filter.js` 文件很可能包含了实现过滤...

    jquery easyui 表头固定 datagrid 弹出框 AJAX刷新页面

    综合以上,这个主题涵盖了解决在使用jQuery EasyUI开发网页应用时,如何创建一个带有固定表头的datagrid,实现弹出框展示详细信息,以及如何利用AJAX技术动态刷新数据。理解并掌握这些知识点对于构建高效、用户体验...

    EasyUI指定列-合并相同数据行

    ### EasyUI指定列-合并相同数据行 #### 易理解释与应用场景 在日常的数据处理过程中,经常会遇到需要对表格中的重复数据进行整理的情况。EasyUI作为一种轻量级的用户界面库,提供了丰富的功能来帮助开发者高效地...

    固定表头的DataGrid

    在处理大数据集时,为了提供更好的用户体验,常常需要实现固定表头的功能,使得用户在滚动浏览内容时,表头始终保持可见,以便于跟踪列对应的数据。本文将深入探讨“固定表头的DataGrid”这一主题,以及如何实现这一...

    datagrid 多表头及动态生成的实现

    // 查询数据库获取问题类型和派单方式的相关信息 List&lt;String&gt; queTypeColumns = reportService.fetchQueTypeColumns(); List&lt;String&gt; sendWayColumns = reportService.fetchSendWayColumns(); Map, Object&gt; ...

    easyui datagrid tip 超出宽度省略

    datagrid添加tooltip及超出宽度添加省略号

    datagrid 4种解决table对齐

    在实际应用中,我们常常会遇到一个问题:如何确保`Datagrid`中的表头和列内容正确对齐。标题"datagrid 4种解决table对齐"和描述"datagrid 4种解决方案 表头与列对齐"正是针对这一问题提出的不同解决策略。下面我们将...

    jQuery EasyUI编辑DataGrid用combobox实现多级联动

    - DataGrid的配置包括`url`(数据源)、`fitColumns`(是否自适应列宽)、`striped`(是否显示斑马线)、`loadMsg`(加载提示信息)等。 - `frozenColumns`和`columns`定义了DataGrid的列,其中`editor`字段指定了...

    easyUI中datagrid鼠标悬浮显示图片

    easyUI中datagrid鼠标悬浮显示图片,博客地址:https://blog.csdn.net/lwf3115841/article/details/119531658?spm=1001.2014.3001.5501

    easyUI datagrid合并单元格(支持子对象的属性)

    easyUI datagrid合并单元格的两种方法 都实现了按照子对象的属性合并单元格的需求 调用方式也很简单调用方式: $(tableID).datagrid("autoUnrelatedMergeCells", ["role.name", "num"]);

    easyui textbox失去焦点事件及获取文本框的内容

    EasyUI文本框失去焦点事件和获取文本框内容的实现 EasyUI文本框是一种常用的UI组件,它提供了许多实用的功能,如文本框失去焦点事件和获取文本框内容等。下面我们将详细介绍EasyUI文本框失去焦点事件和获取文本框...

    jquery获取easyui日期控件的值实现方法

    正确的做法是调用EasyUI提供的`datebox('getValue')`方法来获取日期值,这样才能确保无论用户何时更改选择,都能正确地在JavaScript中获取到最新的日期值。这个知识点对于前端开发人员来说非常重要,能够帮助他们更...

    easyui tab

    EasyUI Tab是一个基于jQuery和EasyUI框架的优秀Tab选项卡插件,它为网页应用程序提供了简单、高效且灵活的选项卡管理功能。EasyUI是一个轻量级的前端开发框架,集合了众多实用的组件,如表格、对话框、菜单、树形...

    DataGrid 实现复杂表头和合并行源码与示例

    四、支持模拟行合并,即对象中存在集合成员; 五、支持自定义转换器(IValueConverter); 六、支持对象集合(ICollection)和支持动态字典集合(ICollection, object&gt;&gt;)的绑定 ; 七、对象集合使用 ...

    easyui合并相同行

    标题中的“easyui合并相同行”指的是在使用EasyUI框架进行前端开发时,处理数据表格中存在相同行的情况。EasyUI是一个基于jQuery的轻量级前端框架,它提供了丰富的组件和样式,帮助开发者快速构建用户界面。在数据...

    JQuery EasyUI DataGrid服务端分页时行号不延续的解决方法

    JQuery EasyUI DataGrid服务端分页加载数据后,DataGrid行号不能延续,总是重新由1开始。因为服务端分页取回的是单页数据,通过LoadData方法加载数据后,pageNumber属性被初始化为1,因此行号总是重新由1开始。现在...

Global site tag (gtag.js) - Google Analytics