找回密码
 立即注册

QQ登录

只需一步,快速开始

IT-Weaver

初级会员

20

主题

76

帖子

240

积分

初级会员

积分
240
IT-Weaver
初级会员   /  发表于:2021-12-27 14:29  /   查看:2475  /  回复:5
10金币
本帖最后由 IT-Weaver 于 2021-12-27 15:40 编辑


image.png104776305.png

在上图中,第二列是celltype的 paint 方法根据注册celltype时传递的一个数据源,动态映射的。



  1. CZElementCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
  2.     if (value) {
  3.         if (value == "0") {
  4.             GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, [ctx, "", x, y, w, h, style, options]);
  5.             return;
  6.         }
  7.         let findvalue = this.CSList.find(t => t.dispCode == value || t.guid == value);
  8.         if (findvalue != null && findvalue != 'undefined') {
  9.             if (this.ShowStyle == 1) {
  10.                 GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, [ctx, findvalue.dispCode, x, y, w, h, style, options]);
  11.             } else if (this.ShowStyle == 2) {
  12.                 GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, [ctx, findvalue.dispName, x, y, w, h, style, options]);
  13.             } else {
  14.                 GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, [ctx, '[' + findvalue.dispCode + ']' + findvalue.dispName, x, y, w, h, style, options]);
  15.             }
  16.             options.sheet.getCell(options.row, options.col,).tag(findvalue.guid);
  17.         } else {
  18.             GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, [ctx, value, x, y, w, h, style, options]);
  19.         }
  20.     } else {
  21.         if (value == "0") {
  22.             GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, [ctx, "", x, y, w, h, style, options]);
  23.         } else {
  24.             GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, [ctx, value, x, y, w, h, style, options]);
  25.         }
  26.     }
  27. };
复制代码


这是映射的那段代码。

但是打印和导出时,发现只打印出来了列的原本的值,也就是业务的流水号,并没有打印出来他的显示值,请问我应该如何设置,才可以让打印时,获取的是显示值,而不是他的原本value。还是说我必须把cell的value改了才可以正常打印出来? 按照当时你们产品的描述,v12的打印和导出应该是既见既所得啊。

最佳答案

查看完整内容

请参考这个demo的实现

5 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-27 14:29:37
来自 4#
IT-Weaver 发表于 2021-12-27 19:34
已在demo中复现我的问题,复现路径: 在第一行第一列,输入任意字符,点击打印按钮,打印出来的是输 ...

请参考这个demo的实现 PrintCustomCell.html (3.24 KB, 下载次数: 179)
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-27 18:28:55
2#
你好,建议你参考附件的demo实现,若仍未解决,请在附件的demo中复现你的问题,这边直接通过demo进行调试。

13.0.7测试Demo.rar

1.88 MB, 下载次数: 313

回复 使用道具 举报
IT-Weaver
初级会员   /  发表于:2021-12-27 19:34:30
3#
Derrick.Jiao 发表于 2021-12-27 18:28
你好,建议你参考附件的demo实现,若仍未解决,请在附件的demo中复现你的问题,这边直接通过demo进行调试。 ...

13.0.7测试Demo.rar (1.88 MB, 下载次数: 265)
回复 使用道具 举报
IT-Weaver
初级会员   /  发表于:2021-12-28 10:36:34
5#
Derrick.Jiao 发表于 2021-12-28 09:58
请参考这个demo的实现

解决了,谢谢,经测试,必须给自定义celltype一个typeName属性才可以让他打印和导出paint渲染之后的值,这个设置,emmm,有点隐蔽。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-28 12:01:28
6#
IT-Weaver 发表于 2021-12-28 10:36
解决了,谢谢,经测试,必须给自定义celltype一个typeName属性才可以让他打印和导出paint渲染之后的值, ...

是的,这个typeName是打印所需要的。那这边就结帖了,有新问题就开新贴交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部