Oracle apex Oracle APEX-如果从自定义按钮打开子模式对话框页面,如何刷新父页面IG
我的页面上有一个IG,带有一个自定义工具栏按钮,可以打开一个模式对话框页面。由于模态对话框是如何打开的,因此我无法使用本机Oracle apex Oracle APEX-如果从自定义按钮打开子模式对话框页面,如何刷新父页面IG,oracle-apex,oracle-apex-19.1,Oracle Apex,Oracle Apex 19.1,我的页面上有一个IG,带有一个自定义工具栏按钮,可以打开一个模式对话框页面。由于模态对话框是如何打开的,因此我无法使用本机对话框关闭来捕获其关闭 我在IG中用于打开Modla对话框的javascript是: apex.server.process( 'GenerateURL', {x01: l_url}, {success: function (pData) {
对话框关闭来捕获其关闭
我在IG中用于打开Modla对话框的javascript是:
apex.server.process(
'GenerateURL',
{x01: l_url},
{success: function (pData) {
console.log(pData);
// Call Modal Dialog Page
apex.navigation.redirect(pData);
},
dataType: "text"
});
问题是模式对话框关闭后,我需要刷新我的IG。如何从父页面捕获模式对话框关闭 模式对话框应使用apex.navigation.dialog
打开。当为模式页面调用apex\u util.prepare\u url
时,它会生成正确的JavaScript代码,并考虑目标页面的设置
有一个选项,p\u plain\u url
,可以用来只获取url,但不要在GenerateURL
中启用它,因为其余的都很重要。另一个参数,p\u triggering\u element
,允许您为动态操作指定元素(这不是apex\u page.get\u url的选项,其工作原理类似)
让我们假设GenerateURL
看起来像这样(注意,我将文档作为triggeringElement传递):
然后可以将JavaScript代码修改为:
apex.server.process(
'GenerateURL',
{x01: idForURL},
{success: function (pData) {
var funcBody = pData.url.replace(/^"javascript:/, '').replace(/\"$/,'');
new Function(funcBody).call(window);
}
});
请注意,JavaScript将ID传递给生成URL的进程,而不是整个URL。这使得流程的使用受到一定的限制,这有助于防止用户滥用它。您甚至可以添加一个检查来验证用户是否能够查看传入的ID值
有了它,您可以添加一个动态动作,监听文档上的对话框关闭事件(JavaScript Expression=document)。请注意,如果通过关闭或取消按钮关闭对话框,则不会触发事件。谢谢。idForURL是什么?我应该在那里放什么?谢谢!!我以前缺少触发元素!加上它,一切都不同了。尽管我仍然不确定作为idForUrl
传递什么,尽管它没有得到利用,但我包含idForUrl
只是为了显示您可能会在URL中传递会话状态。通常,URL从报表转到表单,表单页面的主键通过URL语法设置。这只是向您展示了如何做到这一点,但您的用例可能不需要它。那么我是否应该将这部分`{x01:idForURL}`全部排除在外?或者只是将其设置为空字符串?您的URL是否设置了会话状态(URL中的位置7和8)?如果没有,请随意将其完全移除。
apex.server.process(
'GenerateURL',
{x01: idForURL},
{success: function (pData) {
var funcBody = pData.url.replace(/^"javascript:/, '').replace(/\"$/,'');
new Function(funcBody).call(window);
}
});