找回密码
 立即注册

QQ登录

只需一步,快速开始

vipss

金牌服务用户

23

主题

54

帖子

181

积分

金牌服务用户

积分
181
vipss
金牌服务用户   /  发表于:2017-2-7 19:39  /   查看:4984  /  回复:5
在自定义单元格完成后使用sheet.getCell(row, col).formatter(formatter);无法改变单元格中数据显示的格式。请问这种数据要如何处理格式?

5 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-2-8 09:13:33
沙发
如果是自定义单元格,重写了paint方法,您绘制的时候如果没有给Value 做格式化直接显示value,formatter就不会起作用可以调用format 方法格式化数据。

http://sphelp.grapecity.com/webh ... es.Base~format.html
回复 使用道具 举报
vipss
金牌服务用户   /  发表于:2017-2-8 10:35:15
板凳
dexteryao 发表于 2017-2-8 09:13
如果是自定义单元格,重写了paint方法,您绘制的时候如果没有给Value 做格式化直接显示value,formatter就 ...

请问是不是绘制的时候直接给了Value就可以使用formatter了?绘制的时候如何给Value?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-2-8 10:47:42
地板
instance.paint(ctx, value, x, y, w, h, style, context);
在paint方法中, value就是这个单元格的实际值,没有被格式化的。
您可以从style中获取到formatter的信息。格式化value之后,绘制到单元格上。
回复 使用道具 举报
vipss
金牌服务用户   /  发表于:2017-2-8 11:27:15
5#
dexteryao 发表于 2017-2-8 10:47
instance.paint(ctx, value, x, y, w, h, style, context);
在paint方法中, value就是这个单元格的实际值 ...

你好,能具体写个例子么?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-2-8 12:07:24
6#
网站那个Demo
您加上            sheet.getCell(0,1).formatter("#,##0.000")

然后都输入数字就可以看到效果了

  1.         FullNameCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
  2.             if (value) {

  3.                 var text = this.format(value.firstName + "." + value.lastName, style.formatter)
  4.                 if (!ctx) {
  5.                     return;
  6.                 }

  7.                 ctx.save();
  8.                 ctx.fillText(text,x + w, y + h);

  9.                 ctx.restore();

  10.                 // spreadNS.CellTypes.Base.prototype.paint.apply(this, [ctx, value.firstName + "." + value.lastName, x, y, w, h, style, options]);
  11.             }
  12.         };
复制代码

评分

参与人数 1满意度 +5 收起 理由
vipss + 5 很给力!

查看全部评分

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