找回密码
 立即注册

QQ登录

只需一步,快速开始

湖南大商帮

初级会员

44

主题

152

帖子

454

积分

初级会员

积分
454
湖南大商帮
初级会员   /  发表于:2023-7-4 10:07  /   查看:879  /  回复:9
在学习自定义数据验证公式的时候,在官网给的实战代码demo里(链接:https://jscodemine.grapecity.com/share/mXRpofXdvUKmV86P9h7YPg/

加入下面2行代码:
image.png951811218.png
在验证失败的时候,他并没有如期的弹出错误提示框
是我用错了对象,还是只有普通内置的几个方法才有提示框呢

9 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-4 18:41:04
沙发
您好,猜测是因为您没有设置errorTitle和errorMessage,如下图所示:

image.png376385802.png

建议您参考这个学习指南实现您的需求:https://demo.grapecity.com.cn/sp ... ta-validator/purejs
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
湖南大商帮
初级会员   /  发表于:2023-7-5 11:43:16
板凳
加了errorTitle没有用,加了errorMessage报错

image.png214145201.png
而且演示demo里弹出来的也是传统的网页Alert提示框,体验很不好,跟标准的数据验证错误的提示框不是一回事啊
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-5 19:03:36
地板
您好,我简单做了一个Demo,您参考一下。

temp.zip

1.45 KB, 下载次数: 38

SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
湖南大商帮
初级会员   /  发表于:2023-7-6 10:33:30
5#
您给的例子确实能如期运行,但是多了几个前置条件,在spread Designer里,且是用的标准的list验证器,我现在把环境切换到我们开发的14.2.5版本下,且没有用spread Designer,且是用的自定义验证方法(不是数字文本列表这些,因为我们业务的验证规则很复杂),验证结果我先模拟直接返回false,实际运行会走console.log,但是界面并没有任何提示框弹出,没有任何提示效果,代码见附件,是不是弹框只是在designer里面才有的

Desktop.zip

1.4 KB, 下载次数: 44

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-6 16:32:56
6#
湖南大商帮 发表于 2023-7-6 10:33
您给的例子确实能如期运行,但是多了几个前置条件,在spread Designer里,且是用的标准的list验证器,我现 ...

您好,您可以在ValidationError这个事件中去实现提示框弹出的效果。

sheet.bind(GC.Spread.Sheets.Events.ValidationError, function(e, args) {
       // do some thing.
});

另外如果想要设置提示效果,需要设置highlightStyle,如下图所示:

image.png149822997.png

image.png483065795.png
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
湖南大商帮
初级会员   /  发表于:2023-7-8 11:10:36
7#
本帖最后由 湖南大商帮 于 2023-7-8 11:15 编辑

那也就是说,在设计器里标准验证器模式下的错误提示框,是designer自己写代码在validatorError事件里实现的,而不是spread本身提供的?
那如果是这样的话,类似下面的几个方法:
  1. dv1.<span style="background-color: rgb(255, 255, 254); color: rgb(0, 0, 0); font-family: Consolas, &quot;Courier New&quot;, monospace; white-space: pre;">errorTitle="title";</span>
复制代码
的意义何在呢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-10 11:17:57
8#
您好,这是因为SpreadJS的产品定位是一个控件,很多的功能我们只是开放了一个口子,而没有真正的去实现,这是为了满足用户的自定义需求,您可能是想实现一个弹窗,但是其他的用户可能就是想显示一行字,如果我们直接写死弹出一个弹框,就会为其他用户自定义时留下障碍。

另外因为我们产品的使用过程中经常需要读写Excel文件,在Excel中就有errorTitle这类数据,我们需要提供相应的接口去做兼容,否则就会出现数据丢失的问题,并不是说这个接口就没有意义。
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
湖南大商帮
初级会员   /  发表于:2023-7-10 16:05:39
9#
结合好几个demo示例代码和您刚才的这一段描述,我好像搞清楚了,自定义数据验证方法,需要在Events.ValidationError事件里自己去实现想要的弹出提示效果,spread本身并没有自带这个默认的提示框
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-10 16:53:16
10#
湖南大商帮 发表于 2023-7-10 16:05
结合好几个demo示例代码和您刚才的这一段描述,我好像搞清楚了,自定义数据验证方法,需要在Events.Validat ...

您好,没错,spread需要自行去实现,designer则是基于spread二开的产品,所以设计了一个简单的弹窗。
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部