请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

小疯子

注册会员

4

主题

19

帖子

55

积分

注册会员

积分
55
最新发帖
小疯子
注册会员   /  发表于:2018-7-19 17:46  /   查看:5199  /  回复:10
1,使用自定义单元格,校验数据的时候,自定义单元格会闪烁
image.png40877074.png
  1. var style='style="text-align:center;margin: auto;position: absolute; top: 25%; left: 0; bottom: 0; right: 0;"';
  2.                 sheet.getCell(row, col).cellType(new HTMLCellType()).value('<div '+style+'>'+text+'<span style="color:red;" >*</span></div>');
  3.        
复制代码
自定义单元格的代码

  1.                
  2.                 CellDataValidation : function(row,col,sheet,data){
  3.                
  4.                  var gcdv = GC.Spread.Sheets.DataValidation;
  5.                  
  6.                        
  7.              var ddv = null;
  8.              var minVal=parseInt(length);
  9.              var maxVal=parseInt(length);
  10.              //必填项,判断长度
  11.              switch (dataType) {
  12.                      case "2":
  13.                         if (gdecimal == 0) {
  14.                             ddv = gcdv.createNumberValidator(5,
  15.                                 isNaN(minVal) ? minVal : parseInt(minVal),
  16.                                 isNaN(maxVal) ? maxVal : parseInt(maxVal),
  17.                                 true);
  18.                         } else {
  19.                             ddv = gcdv.createNumberValidator(0,
  20.                                 isNaN(minVal) ? minVal : parseFloat(minVal),
  21.                                 isNaN(maxVal) ? maxVal : parseFloat(maxVal),
  22.                                 false);
  23.                         }
  24.                         break;
  25.                      case "3":
  26.                               ddv = gcdv.createTextLengthValidator(1,
  27.                                                       100,
  28.                                                       100);
  29.                                 break;
  30.                      case "4":
  31.                               ddv = gcdv.createTextLengthValidator(1,
  32.                                               100,
  33.                                               100);
  34.                                 break;
  35.                      case "5":
  36.                                       ddv = gcdv.createTextLengthValidator(1,
  37.                                                       100,
  38.                                                       100);
  39.                                                 break;
  40.                      case "1":
  41.                                       ddv = gcdv.createTextLengthValidator(1,
  42.                                                       100,
  43.                                                       100);
  44.                                                 break;
  45.                      case "12":
  46.                                       ddv = gcdv.createTextLengthValidator(1,
  47.                                                       100,
  48.                                                       100);
  49.                                   break;
  50.                  default :
  51.                         ddv = gcdv.createTextLengthValidator(5,
  52.                             isNaN(minVal) ? minVal : parseInt(minVal),
  53.                             isNaN(maxVal) ? maxVal : parseInt(maxVal));
  54.                         break;
  55.                 }
  56.              
  57.              if (ddv != null) {
  58.                     ddv.errorMessage(0);//事件
  59.                     ddv.errorStyle();//stop warning infomation
  60.                     ddv.errorTitle();//事件
  61.                     ddv.showErrorMessage(false);//是否错误提示信息
  62.                     if(required == 1){
  63.                             ddv.ignoreBlank(false);//必须输入
  64.                     }else{
  65.                             ddv.ignoreBlank(true);//非必须
  66.                     }
  67.                     ddv.showInputMessage(false);//是否显示提示信息
  68.                     ddv.inputTitle();//显示提示信息的标题
  69.                     ddv.inputMessage();//显示提示信息的文本
  70.                    
  71.                 
  72.                 sheet.setDataValidator(row, col, 1, 1, ddv);

  73.                
  74.                 }
  75.        
复制代码

调用下面的方法是,就会出现闪烁
  1. me.CellDataValidation(row,col,sheet,data[i]);
复制代码


10 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-19 18:02:52
沙发
收到,我这边看一下能否重现问题。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-20 17:30:11
板凳
上面遮罩层是怎样实现的。在您遮罩层的dom中有没有加入gcUIElement="gcEditingInput"这个属性。如果没有您加入后在试一下还有没有这个问题。
就像下面这个demo这样,在spread之外的内容需要加入gcUIElement="gcEditingInput"这个属性。
https://runjs.cn/code/g2avvjdl

如果还是不行,请提供一个完整demo。我帮您看一下。
回复 使用道具 举报
小疯子
注册会员   /  发表于:2018-7-23 09:00:53
地板
ClarkPan 发表于 2018-7-20 17:30
上面遮罩层是怎样实现的。在您遮罩层的dom中有没有加入gcUIElement="gcEditingInput"这个属性。如果没有您 ...

好的,我这边测试一下您说的方法,遮罩使用的是Ext的,在添加遮罩之前,好像就有这个闪烁问题
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-23 14:35:01
5#
您试一下如果还有问题,那就提供一个能够重现问题的简单demo,我们详细的调研一下。
回复 使用道具 举报
小疯子
注册会员   /  发表于:2018-7-23 16:42:56
6#
ClarkPan 发表于 2018-7-23 14:35
您试一下如果还有问题,那就提供一个能够重现问题的简单demo,我们详细的调研一下。

demo已上传

Downloads.zip

5.82 KB, 下载次数: 137

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-23 18:13:44
7#
收到,我看一下,明天给您回复。
回复 使用道具 举报
小疯子
注册会员   /  发表于:2018-7-25 14:54:51
8#
ClarkPan 发表于 2018-7-23 18:13
收到,我看一下,明天给您回复。

给您发的demo看了吗,这种问题可以解决吗
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-25 17:48:38
9#
是这样的,这句代码注释掉就好了
image.png809873351.png
这里是不能清空tag的,重绘时需要用到。
否则会导致循环重绘,如果您设置tag是想根据单元格中填写的内容实时进行重绘,这样的话需要在valuechange事件中做,在事件中判断单元格是否发生了变化,发生了变化在去清空tag,然后手动调用repaint进行重绘。
回复 使用道具 举报
小疯子
注册会员   /  发表于:2018-7-26 10:55:31
10#
ClarkPan 发表于 2018-7-25 17:48
是这样的,这句代码注释掉就好了

这里是不能清空tag的,重绘时需要用到。

测试了一下,确实有效果,问题解决了,非常感谢!!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部