找回密码
 立即注册

QQ登录

只需一步,快速开始

薇命是从

金牌服务用户

12

主题

25

帖子

107

积分

金牌服务用户

积分
107
薇命是从
金牌服务用户   /  发表于:2024-3-27 11:48  /   查看:566  /  回复:5
1金币
我这里需要根据这个输入框设置一个校验条件

image.png227922057.png
希望当用户输入错误时、可以阻止用户输入
但是使用设计器时是可以正常出现该弹框、但是使用streadview时就不会出现这个弹框
因此、我选择使用GC.Spread.Sheets.Events.InvalidOperation来监听数据、这样好自定义一个拦截框
image.png138281859.png
然而、无论我实在是在DesignerView还是streadview都不会触发这个事件

最佳答案

查看完整内容

setValue不生效的原因大概率是ValidationError事件触发时机是在您键入内容的那一瞬间,此时您输入的值还没有到页面上,此时您setValue是代码瞬间的操作,会导致事件触发结束后setValue的内容被您键入的内容覆盖了。因此,您可以用setTimeout来让setvalue代码滞后即可。 第一您的第二个问题,不会造成循环,因为代码操作不会触发事件(极个别除外)

5 个回复

倒序浏览
最佳答案
最佳答案
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-3-27 11:48:13
来自 4#
薇命是从 发表于 2024-3-27 14:17
嗯嗯、更换方法确实有效
再请问一个问题ValidationError事件监听后我想清空单元格数据用setValue不生效 ...

setValue不生效的原因大概率是ValidationError事件触发时机是在您键入内容的那一瞬间,此时您输入的值还没有到页面上,此时您setValue是代码瞬间的操作,会导致事件触发结束后setValue的内容被您键入的内容覆盖了。因此,您可以用setTimeout来让setvalue代码滞后即可。
  1. function vError(sender, args) {
  2.     alert("error");
  3.     setTimeout(function () {
  4.         activeSheet.setValue(args.row, args.col, "")
  5.     }, 0)
  6. }
复制代码


第一您的第二个问题,不会造成循环,因为代码操作不会触发事件(极个别除外)
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-3-27 12:10:05
2#
您好,数据验证导致的非法数据并不会触发InvalidOperation事件,而只会触发validationerror事件,您可以参考这个API:https://demo.grapecity.com.cn/sp ... nts#validationerror
回复 使用道具 举报
薇命是从
金牌服务用户   /  发表于:2024-3-27 14:17:20
3#
Richard.Huang 发表于 2024-3-27 12:10
您好,数据验证导致的非法数据并不会触发InvalidOperation事件,而只会触发validationerror事件,您可以参 ...

嗯嗯、更换方法确实有效
再请问一个问题ValidationError事件监听后我想清空单元格数据用setValue不生效可能是什么原因呢?
这个操作可能会造成循环么?
回复 使用道具 举报
薇命是从
金牌服务用户   /  发表于:2024-3-27 16:46:03
5#
非常感谢、问题已经结局了
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-3-27 16:48:11
6#
薇命是从 发表于 2024-3-27 16:46
非常感谢、问题已经结局了

好的,本帖子的问题解决,这里就先结帖了。后续如果您有新的问题,也欢迎创建新的求助帖。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部