起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6638|回复: 10

[结贴] event.cancel = true无效

[复制链接]

185

主题

777

帖子

1644

积分

金牌会员

Rank: 6Rank: 6

积分
1644
QQ
发表于 2013-10-23 11:56:42 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
我在data的BeforeSave事件中写的event.cancel = true终止保存无效,结果还是保存了数据,用throw new Error();也是无效,这是怎么回事?
天天就知道打酱油打酱油,有点出息行么。QQ:497923435

2

主题

812

帖子

951

积分

高级会员

Rank: 4

积分
951
QQ
发表于 2013-10-23 15:15:55 | 显示全部楼层
  1. mainActivity.dataMainBeforeSave = function(event) {
  2.         event.cancel = true;
  3. };
复制代码
是这样写的吗?测试过了,是可以终止的,虽然grid中仍会出现记录条目,但是刷新后会发现这条是没有保存入数据库的。
技术支持qq 1282807026。(远程支持专用)
回复 支持 反对

使用道具 举报

161

主题

1664

帖子

4092

积分

论坛元老

Rank: 8Rank: 8

积分
4092
QQ
发表于 2013-10-23 15:22:00 | 显示全部楼层
加个return
mainActivity.dataMainBeforeSave = function(event) {
        event.cancel = true;
        return;

};
回复 支持 反对

使用道具 举报

185

主题

777

帖子

1644

积分

金牌会员

Rank: 6Rank: 6

积分
1644
QQ
 楼主| 发表于 2013-10-23 16:35:30 | 显示全部楼层
fengwei 发表于 2013-10-23 15:15
是这样写的吗?测试过了,是可以终止的,虽然grid中仍会出现记录条目,但是刷新后会发现这条是没有保存入数 ...

我是用在sendBizRequest2的回调 函数里写的,貌似不行,但在sendBizRequest这个方法里面写没问题
天天就知道打酱油打酱油,有点出息行么。QQ:497923435
回复 支持 反对

使用道具 举报

2

主题

812

帖子

951

积分

高级会员

Rank: 4

积分
951
QQ
发表于 2013-10-23 16:47:20 | 显示全部楼层
ly201026 发表于 2013-10-23 16:35
我是用在sendBizRequest2的回调 函数里写的,貌似不行,但在sendBizRequest这个方法里面写没问题 ...

不太明白,能详细描述一下应用场景吗?你用sendBizRequest2调用action吗?是如何用到data的。
技术支持qq 1282807026。(远程支持专用)
回复 支持 反对

使用道具 举报

185

主题

777

帖子

1644

积分

金牌会员

Rank: 6Rank: 6

积分
1644
QQ
 楼主| 发表于 2013-10-23 16:54:32 | 显示全部楼层
fengwei 发表于 2013-10-23 16:47
不太明白,能详细描述一下应用场景吗?你用sendBizRequest2调用action吗?是如何用到data的。 ...
  1. justep.Request.sendBizRequest2({
  2.    dataType: "json",
  3.    action: "queryRepeatDataAction",
  4.    parameters: param,
  5.    callback: function(result) {
  6.     if(result.state) {
  7.      if(result.response) {
  8.       alert("此范围的日期对应的考勤已存在!");
  9.       event.cancel = true;
  10.       alert(event.cancel);
  11.      }else{
  12.       flag = true;
  13.      }
  14.     }else{
  15.      throw new Error("调用失败!|" + result.response.message);
  16.     }
  17.    }
  18.   });
复制代码
我是用的这个方法调用Action,然后event.cancel = true;貌似没起作用,不过我现在改成下面的方式就可以了。
  1.   var param = new justep.Request.ActionParam();
  2.                 param.setDate("checkDate", startDate);
  3.                
  4.                 var result = justep.Request.sendBizRequest(justep.Context.getCurrentProcess(),
  5.                                                                 justep.Context.getCurrentActivity(),
  6.                                                                 "queryRepeatDataAction", param, null, null,true);
  7.                 var response = justep.Request.transform(justep.Request.getData(result.responseXML));
  8.                 if(response == "true") {
  9.                         alert("此范围的日期对应的考勤已存在!");
  10.                         event.cancel = true;
  11.                 }
复制代码
天天就知道打酱油打酱油,有点出息行么。QQ:497923435
回复 支持 反对

使用道具 举报

2

主题

812

帖子

951

积分

高级会员

Rank: 4

积分
951
QQ
发表于 2013-10-23 17:18:11 | 显示全部楼层
ly201026 发表于 2013-10-23 16:54
我是用的这个方法调用Action,然后event.cancel = true;貌似没起作用,不过我现在改成下面的方式就可以了 ...

第一种方法 alert("此范围的日期对应的考勤已存在!");这句显示了吗?
技术支持qq 1282807026。(远程支持专用)
回复 支持 反对

使用道具 举报

185

主题

777

帖子

1644

积分

金牌会员

Rank: 6Rank: 6

积分
1644
QQ
 楼主| 发表于 2013-10-24 09:34:47 | 显示全部楼层
fengwei 发表于 2013-10-23 17:18
第一种方法 alert("此范围的日期对应的考勤已存在!");这句显示了吗?

显示了。
天天就知道打酱油打酱油,有点出息行么。QQ:497923435
回复 支持 反对

使用道具 举报

2

主题

812

帖子

951

积分

高级会员

Rank: 4

积分
951
QQ
发表于 2013-10-24 09:42:40 | 显示全部楼层
ly201026 发表于 2013-10-24 09:34
显示了。

嗯。我觉得你的取消代码不该写在回调函数里,应该和另一种一样。获取justep.Request.sendBizRequest2函数的返回值,再判断是否取消。你可以测试一下。
技术支持qq 1282807026。(远程支持专用)
回复 支持 反对

使用道具 举报

185

主题

777

帖子

1644

积分

金牌会员

Rank: 6Rank: 6

积分
1644
QQ
 楼主| 发表于 2013-10-24 10:25:52 | 显示全部楼层
fengwei 发表于 2013-10-24 09:42
嗯。我觉得你的取消代码不该写在回调函数里,应该和另一种一样。获取justep.Request.sendBizRequest2函数 ...
  1.                 var reFlag = "";
  2.                 justep.Request.sendBizRequest2({
  3.                         dataType: "json",
  4.                         action: "queryRepeatDataAction",
  5.                         parameters: param,
  6.                         callback: function(result) {
  7.                                 if(result.state) {
  8.                                         reFlag = result.response;
  9.                                 }else{
  10.                                         throw new Error("调用失败!|" + result.response.message);
  11.                                 }
  12.                         }
  13.                 });
  14.                 if(reFlag == "true") {
  15.                         alert("此范围的日期对应的考勤已存在!");
  16.                         event.cancel = true;
  17.                 }
  18.         }
复制代码
我这样写在外面貌似也不行,reFlag = result.response;这个值根本就穿不到外面来,调试的时候reFlag = result.response;这一步的reflag是有值的,但跳出回调函数后就没值了
天天就知道打酱油打酱油,有点出息行么。QQ:497923435
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-31 18:02 , Processed in 0.105669 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表