找回密码
 立即注册

QQ登录

只需一步,快速开始

qq707820685

初级会员

32

主题

138

帖子

388

积分

初级会员

积分
388
qq707820685
初级会员   /  发表于:2017-7-17 11:08  /   查看:6722  /  回复:14
怎么解决这种问题,让spreadjs不自动去0

14 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-17 12:22:53
沙发
您好,您可以通过setFormatter(x,y,"@",GC.Spread.Sheets.SheetArea.viewport);将指定单元格设置为文本格式,x,y分别为指定单元格的rowindex与colindex
回复 使用道具 举报
qq707820685
初级会员   /  发表于:2017-7-17 14:17:39
板凳
ClarkPan 发表于 2017-7-17 12:22
您好,您可以通过setFormatter(x,y,"@",GC.Spread.Sheets.SheetArea.viewport);将指定单元格设置为文本格式 ...

设置sheet.setFormatter(-1, 0, "@", GC.Spread.Sheets.SheetArea.viewport);后 还是不能解决问题
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-17 16:20:49
地板
原因可能是您设置的值得类型是数字类型,要将其设置成字符串类型,像下面这样。
sheet.setFormatter(-1, 0, "@", GC.Spread.Sheets.SheetArea.viewport);
sheet.setValue(0,0,"012345767");
sheet.setValue(1,0,"0123457679");
回复 使用道具 举报
qq707820685
初级会员   /  发表于:2017-7-17 16:27:38
5#
ClarkPan 发表于 2017-7-17 16:20
原因可能是您设置的值得类型是数字类型,要将其设置成字符串类型,像下面这样。
sheet.setFormatter(-1, 0 ...

我没进行任何操作,只是单纯地触发editEnded事件, 编辑单元格输入010010, 编辑完成后单元格的值自动变成10010
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-17 16:34:10
6#
本帖最后由 ClarkPan 于 2017-7-17 16:35 编辑

您好,按照之前说的设置写了一个demo,您参考一下,在第一列进行输入零为前缀的数字会自动转换为文本格式。 image.png626333007.png

model.zip

717 Bytes, 下载次数: 171

回复 使用道具 举报
qq707820685
初级会员   /  发表于:2017-7-17 17:33:49
7#
ClarkPan 发表于 2017-7-17 16:34
您好,按照之前说的设置写了一个demo,您参考一下,在第一列进行输入零为前缀的数字会自动转换为文本格式。
...

我是在editEnded事件里做了存储编辑后的值的处理, 为什么编辑完后前缀0会自动消失,刷新页面从数据库取出来显示在表格里就是有0前缀。编辑事件里args.editingText的值是带0前缀的,typeof类型是string
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-17 18:12:19
8#
本帖最后由 ClarkPan 于 2017-7-18 08:59 编辑
qq707820685 发表于 2017-7-17 17:33
我是在editEnded事件里做了存储编辑后的值的处理, 为什么编辑完后前缀0会自动消失,刷新页面从数据库取 ...

您好,您可以提供一个demo,我们帮您看一下,怀疑是editEnded事件中的处理逻辑造成的。后端可以不提供,如果单纯是将值拿到保存后台,这块应该不回影响。
回复 使用道具 举报
qq707820685
初级会员   /  发表于:2017-7-18 12:02:34
9#
ClarkPan 发表于 2017-7-17 18:12
您好,您可以提供一个demo,我们帮您看一下,怀疑是editEnded事件中的处理逻辑造成的。后端可以不提供, ...
  1. editData: function(obj){
  2.         obj.sheet.bind(GC.Spread.Sheets.Events.EditEnded, function(sender, args){
  3.             let node = obj.node, updateId, field;
  4.             if(node){
  5.                 updateId = node.getID();
  6.                 thisSheetSetting.cols.forEach(function(col, idx){
  7.                     if(args.col === idx){
  8.                         field = col.data.field;
  9.                         node.data[field] = args.editingText;
  10.                     }
  11.                 });
  12.                 thisAjax.updateData(globalId, updateId, field, args.editingText);
  13.             }
  14.             else {
  15.                 args.sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).value('');
  16.             }
  17.         });
  18.     }
复制代码


相关代码就这, 其他地方没有处理,已经设置sheet.setFormatter, 还是不能解决问题
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-18 16:58:11
10#
qq707820685 发表于 2017-7-18 12:02
相关代码就这, 其他地方没有处理,已经设置sheet.setFormatter, 还是不能解决问题

您好,猜测您是通过setValue进行单元格的赋值的,如果是,那么您setValue的值是否是数字,如果是将其类型转换为字符串就行了。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部