Easyui的datagrid组件,销复杂的合并单元格的实现方法

本文介绍如何在Easyui的datagrid组件中实现复杂的合并单元格操作,包括复选框的向下合并和‘说明’列的横向合并,以达到两行显示一条内容的效果。同时提醒读者,为获取最新文档,应查阅Easyui英文官网。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果如下图:
如图:主要有两处合并,一是复选框向下合并,二是
主要有两处合并,一是复选框向下合并,二是第2行“说明”向右合并,简而言之就是两行显示一条内容。

              // easyui版本1.8.1              
              $(selector).datagrid({
                  url:url,
                  //......
                  //其他属性设置略过
                  //......
                  ,columns : [[  // 列设置
                      {field:'id',checkbox:true}   //这一列需要向下合并
                      ,{field:'title',title:'规则',width:200,formatter:function(v,r,i){
                          return i%2 == 0 ? r.title : r.remark;    // 如果当前行是第1行,显示title字段,
                                                                   // 如果当前行是第2行,显示remark字段,第2行remark字段向左合并
                  }}
                  ,loadFilter : function(data){
                      var row = [];
                      for(var i=0;i<data.data.length;i++){  // 整理数据源
                          row.push(data.data[i]);
                          row.push(data.data[i]);    //复制一行变成1,1,2,2,3,3
                  }
                  return {
                      total : data.total
                      ,rows : row
                  }
              }
              ,onLoadSuccess : function(data){    //加载完成回调
                  var cell = $(this);
                  $.each(data.rows,function(i,n){   
                      if(i%2 === 0){  // 每2行为一组设置合并单元格                      
                          cell.datagrid('mergeCells',{  
                              index : i
                              ,field : 'id'
                              ,rowspan : 2   // 我的第一列是checkbox,所以设置向下合并单元格,垂直合并两行
                          });
                          cell.datagrid('mergeCells',{
                              index : i+1        //行索+1,指向一组的第二行
                              ,field : 'title'   //合并行的起点,横向合并是从左向右合并 
                              ,colspan : 7       //横向合并的格子数量
                          });
                      }
                  });
              }
              ,onSelect : function(i,row){
                  if(i%2 == 1) {
                      $(this).datagrid('selectRow',i-1);  //点击选择了组的第2行的话自动跳到第1行
                  }
              }
          });
          /*
            原理:title字段连续显示2行,在第2行设置横向合并,同时使用formatter函数替换为显示remark字段
            关键点:需要设置横向的字段不能设置为列字段,一旦设置,怎么搞都不行的
          */

发个提醒:easyui文档要到英文官网看,国内倒是有个中文网站,版本落后太多,文档更新滞后也很多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值