找回密码
 立即注册

QQ登录

只需一步,快速开始

繁星满天828

注册会员

3

主题

8

帖子

27

积分

注册会员

积分
27
  • 585

    金币

  • 3

    主题

  • 8

    帖子

最新发帖
繁星满天828
注册会员   /  发表于:2023-6-8 11:59  /   查看:1340  /  回复:3
5金币
您好,我在自定义单元格中paint函数里面,想要合并当前选定单元格所在的行,应该如何做?我的代码是这样写:

  1. DetailHeaderCellType.prototype.paint = function(ctx,value,x,y,w,h,style,context){

  2.     if(!ctx)
  3.         return;   

  4.     //debugger;        
  5.     if(!this.tablelabel){
  6.         //无值时候不进行绘制,需要显示则在前端cell.value('xxxx')
  7.         return;
  8.     }

  9.     const {row,sheet} = context;
  10.     const rowrange = sheet.getRange(row,-1,1,-1);
  11.    
  12.     style.backColor = 'lightgray';
  13.     GC.Spread.Sheets.CellTypes.Base.prototype.paint.apply(this,[ctx,this.tablelabel,x,y,w,h,style,rowrange]);
  14.    
  15. }
复制代码

但是出来的效果是这样:

image.png230792235.png

如何可以不重复绘制,直接合并成为一个区域?谢谢!

最佳答案

查看完整内容

您好,可以直接使用合并单元格的API addSpan() 来实现合并。 请参考该API文档:https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Worksheet#addspan

3 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-8 11:59:43
来自 2#
您好,可以直接使用合并单元格的API addSpan() 来实现合并。

请参考该API文档:https://demo.grapecity.com.cn/sp ... s.Worksheet#addspan
回复 使用道具 举报
繁星满天828
注册会员   /  发表于:2023-6-9 06:19:31
3#
Joestar.Xu 发表于 2023-6-8 14:26
您好,可以直接使用合并单元格的API addSpan() 来实现合并。

请参考该API文档:https://demo.grapecity. ...

谢谢大神,经过文档指引,自己摸索了一番,addSpan只能在第一次合并时候使用,由于paint会被多次调用,因此需要判断是否已经合并过:
  1.     const {row,col,sheet} = context;
  2.     const rowrange = sheet.getRange(row,-1,1,-1);
  3.     const spans = sheet.getSpans(rowrange);
  4.     //debugger;
  5.     style.backColor = 'lightgray';
  6.     if(spans.length===0){     
  7.         //整行合并
  8.         sheet.addSpan(row,-1,1,-1);
  9.         //debugger;
  10. /*         style.hAlign = GC.Spread.Sheets.HorizontalAlign.left;
  11.         if(this.tablelabel)
  12.             GC.Spread.Sheets.CellTypes.Base.prototype.paint.apply(this,[ctx,this.tablelabel,x,y,w,h,style,context]);
  13.         else
  14.             GC.Spread.Sheets.CellTypes.Base.prototype.paint.apply(this,[ctx,'',x,y,w,h,style,context]); */
  15.     }else
  16.         GC.Spread.Sheets.CellTypes.Base.prototype.paint.apply(this,[ctx,x<50 ? this.tablelabel : '',x,y,w,h,style,context]);
复制代码

评分

参与人数 1金币 +500 收起 理由
Joestar.Xu + 500 很给力!

查看全部评分

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-9 08:40:47
4#
繁星满天828 发表于 2023-6-9 06:19
谢谢大神,经过文档指引,自己摸索了一番,addSpan只能在第一次合并时候使用,由于paint会被多次调用,因 ...

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部