• EasyUI-datagrid-自动合并单元格


    1.目标

      1.1表格初始化完成后,已经自动合并好需要合并的行;

      1.2当点击字段排序后,重新进行合并;

    2.实现

      2.1 引入插件

        

    Js代码  收藏代码
    1. /** 
    2.  * author ____′↘夏悸 
    3.  * create date 2012-11-5 
    4.  * 
    5.  **/  
    6. $.extend($.fn.datagrid.methods, {  
    7.     autoMergeCells : function (jq, fields) {  
    8.         return jq.each(function () {  
    9.             var target = $(this);  
    10.             if (!fields) {  
    11.                 fields = target.datagrid("getColumnFields");  
    12.             }  
    13.             var rows = target.datagrid("getRows");  
    14.             var i = 0,  
    15.             j = 0,  
    16.             temp = {};  
    17.             for (i; i < rows.length; i++) {  
    18.                 var row = rows[i];  
    19.                 j = 0;  
    20.                 for (j; j < fields.length; j++) {  
    21.                     var field = fields[j];  
    22.                     var tf = temp[field];  
    23.                     if (!tf) {  
    24.                         tf = temp[field] = {};  
    25.                         tf[row[field]] = [i];  
    26.                     } else {  
    27.                         var tfv = tf[row[field]];  
    28.                         if (tfv) {  
    29.                             tfv.push(i);  
    30.                         } else {  
    31.                             tfv = tf[row[field]] = [i];  
    32.                         }  
    33.                     }  
    34.                 }  
    35.             }  
    36.             $.each(temp, function (field, colunm) {  
    37.                 $.each(colunm, function () {  
    38.                     var group = this;  
    39.                       
    40.                     if (group.length > 1) {  
    41.                         var before,  
    42.                         after,  
    43.                         megerIndex = group[0];  
    44.                         for (var i = 0; i < group.length; i++) {  
    45.                             before = group[i];  
    46.                             after = group[i + 1];  
    47.                             if (after && (after - before) == 1) {  
    48.                                 continue;  
    49.                             }  
    50.                             var rowspan = before - megerIndex + 1;  
    51.                             if (rowspan > 1) {  
    52.                                 target.datagrid('mergeCells', {  
    53.                                     index : megerIndex,  
    54.                                     field : field,  
    55.                                     rowspan : rowspan  
    56.                                 });  
    57.                             }  
    58.                             if (after && (after - before) != 1) {  
    59.                                 megerIndex = after;  
    60.                             }  
    61.                         }  
    62.                     }  
    63.                 });  
    64.             });  
    65.         });  
    66.     }  
    67. });  

      2.2html代码

        

    Html代码  收藏代码
    1. <table id="simpleDgId" style="height: 300px" />  

      2.3js代码

        

    Js代码  收藏代码
    1. var sortFlag = false;  
    2.     $('#simpleDgId').datagrid({  
    3.         url:"testController.do?datagrid",  
    4.         fitColumns:true,  
    5.         singleSelect:true,  
    6.         remoteSort: false,  
    7.         columns:[[  
    8.                   {field:"age",title:"年龄",25,align:'center',sortable:true},  
    9.                   {field:"userName",title:"名称",25,align:'center',sortable:true},  
    10.                   {field:"mobilePhone",title:"手机",25,align:'center',sortable:true}  
    11.         ]],  
    12.         onSortColumn:function(sort, order){  
    13.             sortFlag = true;  
    14.             if("userName"==sort){  
    15.                 $(this).datagrid("autoMergeCells",[sort]);  
    16.             }else{  
    17.                 $(this).datagrid("autoMergeCells");  
    18.             }  
    19.         },  
    20.         onLoadSuccess: function(data){  
    21.             if(!sortFlag) $(this).datagrid("autoMergeCells");  
    22.         }  
    23.     });  

      2.4后台

         url:"testController.do?datagrid"

         后台数据就是普通的表格数据,这里就不赘述了

      

      2.5效果



     

     

     

  • 相关阅读:
    中断高深吗?不!和我一起了解它!(三)
    IIS7下uploadify上传大文件出现404错误
    初来博客园
    cxf3.x +spring 3.x(4.x)+ maven 发布webservice 服务
    angularjs + fis +modJS 对于支持amd规范的组建处理(PhotoSwipe 支持,百度webUpload支持)
    elasticsearch suggest 的几种使用completion 的基本 使用
    使用github+sublime+markdwon 写文章,写博客并发布到博客园
    小互联网公司
    linux pts
    linux添加用户例如oracle
  • 原文地址:https://www.cnblogs.com/gc2013/p/3630479.html
Copyright © 2020-2023  润新知