【问题标题】:How know the modal dialog closed?怎么知道模态对话框关闭了?
【发布时间】:2021-06-25 03:33:17
【问题描述】:

我使用的是 APEX 21.1。我有一个带有交互式报告的页面。它的默认链接打开一个模式对话框页面。我在它的查询中添加了两列 Link 类型的列。例如,

select deptno, dname, loc, 'Open Examination Dialog' as examination_dialog, 'Open followup dialog' as followup_dialog from dept;

我需要在新选项卡中打开一个页面,并在检查对话框关闭时向其发送参数。并在关闭后续对话框时执行相同但使用不同参数的操作。所以,我需要知道哪个对话框已关闭,并基于该对话框执行带有类似代码的 javaScript 动态操作

apex.navigation.openInNewWindow();

我尝试为检查对话框列和后续对话框设置静态 ID,并创建了 2 个“对话框关闭”类型的动态操作,并将列的静态 ID 设置为调用对话框页面的 jQuery 选择器。但什么也没有发生。 我可以知道哪个对话框已关闭并基于此执行动态操作吗? 这是一个模拟...

ws=ESLAM_WS
un= forhelp  
pwd=Forhelppwd$  
app=TEST2_FOR_ME  
pages= 2 and 6

第 2 页中的 IR 有一个名为“打开对话框”的列(链接)。它应该打开第 6 页,这是一个模式。 Page 2 有一个“Dialog Closed”动态操作,当对话框关闭时应该显示一个警报。但是动态动作不会触发。应该有另一列打开另一个模式对话框,当它关闭时,我需要执行另一个动态操作,例如另一个警报。

【问题讨论】:

    标签: oracle-apex


    【解决方案1】:

    创建 2 个动态操作,每个对话页面一个。添加此 javascript 表达式作为动态操作(除了标准的 On Dialog Closed 之外)的客户端条件,该操作应在第 6 页关闭时触发:

    this.data && this.data.dialogPageId && this.data.dialogPageId == 6
    

    对第二个动态操作执行相同的操作,但为 this.data.dialogPageId 设置适当的值

    在动态动作javascript中,this指的是触发元素。自己研究这个问题的最好方法是在动态动作中执行 javascript 真实动作(仅用于开发)

    console.log(this);
    

    您会注意到数据中有一个属性dialogPageId,其值为关闭窗口的值。因此,如果在关闭该特定页面时触发了动态操作,则此条件将返回 true。

    【讨论】:

    • 它检查对话框页面是否为第 6 页。我在我的一个应用程序中使用它。你试过了吗?
    • 我不知道它是否有效。 DA 的“When”部分具有属性“EVENT= Dialog Closed”、“selection type=javaScript expression”并且表达式是“window”。如果我将您的代码作为客户端条件,它会以任何一种方式触发,因为触发元素是“窗口”。这就是我测试时发生的事情。我认为有一种方法可以将列称为触发元素,但我不知道如何。
    • 在屏幕截图中使用设置对我来说效果很好(注意我的在第 26 页)。如果我关闭对话框第 26 页,则会触发操作。如果我将该代码更改为另一个页码并关闭对话框第 26 页,则不会触发操作。稍微改变了措辞,因为它确实令人困惑。
    • 1- 您是否将表达式作为“对话框关闭”动态操作的客户端条件? 2- 第 26 页是链接到报告页面的主对话框吗?还是像我这样使用列(链接)调用的对话框?
    • 你不需要表达“窗口”——就像我的截图中的区域一样。检查你的工作区中的应用程序“TEST2_FOR_ME - Koen”,我在那里展示它。
    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2011-11-05
    • 1970-01-01
    • 2021-04-14
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多