zoukankan      html  css  js  c++  java
  • 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效果



     

     

     

  • 相关阅读:
    刘强东:当下正是行业谷底,可卖了两辆车的二手车电商却估值2亿美金 传统商业的价值和经济规律完全适用于互联网 任何一种互联网商业模式,如果不能够降低行业的交易成本,不能够提升行业交易效率的话,那么最后注定会失败的。
    学习一样新东西行而有效的方法 学习捷径 一项由10个步骤组成的学习方法
    侃侃程序员的个人努力与前途问题 程序员到底怎么了
    你觉得你在创业,但其实你可能只是在做小生意而已 制定正确的计划 创业和经营小企业之间的差异
    外贸圈 贸易经 外贸心路 一位成功外贸人的SOHO心得
    总结创业成功的共性 企业成功的必要条件 --投资教父阎焱:创业成功的九九八十一难
    Navicat 12.x for MySQL最新版安装破解教程(附安装包和注册机,全网独家可用
    Xmanager PowerSuite 6企业版详细安装破解教程,解决评估过期问题(附注册机,全网独家可用),非学校/家庭免费版
    UltraEdit等软件详细安装破解教程,附注册机(全网独家可用)
    SpringBoot2.0微信小程序支付多次回调问题
  • 原文地址:https://www.cnblogs.com/gc2013/p/3630479.html
Copyright © 2011-2022 走看看