找回密码
 立即注册

QQ登录

只需一步,快速开始

IvanBy
金牌服务用户   /  发表于:2017-5-24 23:43  /   查看:3987  /  回复:9
本帖最后由 IvanBy 于 2017-5-24 23:50 编辑

参考 http://gcdn.gcpowertools.com.cn/showtopic-23198-1-1.html的Demo,最后在setDataValidator的时候提示toJSON未定义。请问,这是什么原因呢?                                          
  1. var cCondition = new CustomerCondition(1, 4);
  2. var dv = new GcSpread.Sheets.DefaultDataValidator(cCondition);
  3. dv.type = GcSpread.Sheets.CriteriaType.Custom;

  4. function CustomerCondition(compareType, expected, formula) {
  5.     var self = this;
  6.     self.ignoreBlank = true;
  7.     self.conditionType = "CustomerCondition";
  8.     self.compareType = compareType;
  9.     self.expected = expected;
  10.     self.formula = formula;
  11. };

  12. CustomerCondition.prototype = new GcSpread.Sheets.CellValueCondition();
  13. CustomerCondition.prototype.evaluate = function(evaluator, baseRow, baseColumn, actualValue) {
  14.     if (actualValue === this.expected) {
  15.         return true;
  16.     } else {
  17.         return false;
  18.     }
  19. };
复制代码

                  
  1. sheet.setDataValidator(1, 1, dv);
复制代码
blob409891356.png


blob34925230.png

9 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-25 10:48:45
沙发
附件是我按您所说的问题重试的js,没有出现所说的问题,您可以看一下。
如果还没有解决您的问题,希望您能提供能够重现您问题的完整demo,我们来帮您看一下问题到底出自哪里

demo.zip

1014 Bytes, 下载次数: 184

回复 使用道具 举报
IvanBy
金牌服务用户   /  发表于:2017-5-25 10:55:37
板凳
ClarkPan 发表于 2017-5-25 10:48
附件是我按您所说的问题重试的js,没有出现所说的问题,您可以看一下。
如果还没有解决您的问题,希望您能 ...

我用的是V9版本的
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-25 10:59:56
地板
IvanBy 发表于 2017-5-25 10:55
我用的是V9版本的

我的demo就是V9版本的
回复 使用道具 举报
IvanBy
金牌服务用户   /  发表于:2017-5-25 11:09:32
5#
ClarkPan 发表于 2017-5-25 10:59
我的demo就是V9版本的

奇怪了,我的在new之后得到的dv,dv.condition.toJSON 也是未定义的
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-25 11:14:04
6#
IvanBy 发表于 2017-5-25 11:09
奇怪了,我的在new之后得到的dv,dv.condition.toJSON 也是未定义的

那把您的问题发一个demo过来,我们帮您看一下,也许问题的根本原因不是出在这里
回复 使用道具 举报
IvanBy
金牌服务用户   /  发表于:2017-5-25 11:26:01
7#
image.png105199278.png


image.png599897155.png


image.png551557311.png
回复 使用道具 举报
IvanBy
金牌服务用户   /  发表于:2017-5-25 11:27:40
8#
稍等
回复 使用道具 举报
IvanBy
金牌服务用户   /  发表于:2017-5-25 12:10:18
9#
ClarkPan 发表于 2017-5-25 11:14
那把您的问题发一个demo过来,我们帮您看一下,也许问题的根本原因不是出在这里

找到问题了,是CustomerCondition的定义和它的prototype都需要放在外面,不能和new 时调用在同一个层次。非常感谢!
image.png303211364.png

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-25 13:43:22
10#
IvanBy 发表于 2017-5-25 12:10
找到问题了,是CustomerCondition的定义和它的prototype都需要放在外面,不能和new 时调用在同一个层次。 ...

那就结帖了,有什么问题欢迎另开新帖进行询问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部