请选择 进入手机版 | 继续访问电脑版
查看: 1515|回复: 0

[分享] popup关闭后,如果需要处理传出的值,怎么办?

[复制链接]

46

主题

47

帖子

226

积分

超级版主

Rank: 8Rank: 8

积分
226
发表于 2019-8-12 19:01:02 | 显示全部楼层 |阅读模式
在日常开发中,我们经常会遇到这种情况:
在popup页面中取得值后,将值作为参数传出,某个页面调用popup页面,获取到传出的值后,还需要处理这个值,那么这时候应该怎么处理?
如果在调用popup页面后,直接写处理popup传出值的代码:
这样是不行的,因为后面的代码不会因为Popup页面而停止运行,也就是说,在执行WebPanel2.Popup(&oFilePath) 之后,后面的代码不会因为弹出页面了而停止运行,它会执行完弹出页面的代码后,继续执行,这就导致了在弹出页面获取的值,在这里不会被处理,因为处理传出值&oFilePath的代码,在Popup之后就已经执行过了。
那这时候我们应该怎么处理呢?
有三种处理方式:
1.      Refresh
2.      GlobalEvents
3.      Extension
接下来我们来介绍下通过这三种方式应该怎么处理
一.Refresh
1.      定义一个标识变量
2.      调用弹出页面,并在弹出页面中修改标识变量的值
3.      执行refresh事件
4.      通过refresh事件中的标识判断应当处理哪一个值
5.      在refresh中重置标识变量的值
测试结果:
二.GlobalEvents
GlobalEvents是一个外部对象,由genexus默认导入。它是由开发人员更改的,允许您创建全局事件,以便在Web和智能设备应用程序中的表单组件之间实现更灵活的交互
接下来,我们看下使用GlobalEvents如何处理这个值:
1.  首先,先在GlobalEvents里面定义一个Events,这里注意,他的参数类型一定要跟Popup页面里的传出参数的类型一致
2.  弹出页面中,其他的逻辑处理代码平时怎么写,这里还怎么写,不会受影响。只是返回之前,要先通过GlobalEvents将传出参数保存:
3.  调用弹出框的页面需要在Popup页面后,再执行GlobalEvents事件:
这样就可以取到传出参数,并且可以根据自己的需求处理它了。
三.Extension
Web Extension是一组外部对象,用于解决Web应用程序中的典型问题。
1.      安装Web Extension
下载安装包后,在GeneXus中,知识库管理---管理引用模块
在服务器栏的空白处单击右键,选择从文件上传
打开下载好的安装包文件夹,选择 .OPC文件,install
最后将gx-web-extensions.js文件复制到Web目录下
2.      调用Popup页面
3.      使用Extensions.Web.Popup.OnPopupClosed()获取关闭的弹出页面的信息
4.      根据关闭的弹出页面的信息分别处理各自的传出参数
测试结果:
涉及知识点:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|GeneXus中国

GMT+8, 2019-10-14 12:52 , Processed in 0.058881 second(s), 19 queries .

 

© 2019 GeneXus中国

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