需要在Javascript URL中获取IR报告ID,这会在Oracle Apex 5.1中打开浏览器窗口

时间:2018-10-23 05:58:47

标签: javascript oracle-apex

我正在尝试将我的应用程序从Apex 4.2迁移到Apex 5.1

我将尝试描述完整的用例:

我有一个报告页面,每个记录都有一个链接,该页面会打开一个对话框,用户可以在其中与记录进行编辑/交互。

该对话框具有“上一个/下一个”按钮,允许用户浏览记录。

在报表上设置过滤器后,对话窗口应在“下一个/上一个”行为中考虑到这一点。

例如如果报表过滤器仅选择一行,则对话框窗口的“上一个/上一个”按钮将被禁用,因为报表中没有显示更多的行来浏览。

在Apex 4.1中,我们通过传递交互式报告的ID(使用Javascript通过URL)来实现此目的,然后页面进程将其用于查询后端的Application Express视图以标识当前设置。过滤并使用该信息生成WHERE子句,然后将其传递到“获取下一个或上一个主键”过程。

现在在Apex 5中,我们无法执行此操作,因为我们不知道IR的ID,也不确定是否可以以相同的方式查询元数据视图。

我很高兴知道在Apex 5中获得相同行为的最佳方法是什么。

v_url = 'f?p=' + pAPP_ID + ':' + pPageNo + ':' + pAPP_SESSION + '::::' + pKeyColumn + ',' + pIRReportID + ',' + pModeColumn + ':' + pKeyValue + ',' + $v('apexir_REPORT_ID') + ',' + pMode;

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我不知道您为什么需要在另一页上显示交互式报表ID。 是需要在很多页面上进行这项工作还是仅此一页? 如果只在其中,则可以为此报告设置一个静态ID,然后直接在您的URL中使用定义的ID(下图)。

enter image description here

不确定,但是根据我的记忆……在旧版本的顶点中,每页只允许一个交互式报告。

因此,您可以从该隐藏字段“ apexir_REPORT_ID”中获得此报告的ID。

但是,在APEX5中,它们每页允许一个以上的交互式报告,因此该字段在页面上的所有交互式报告中可能都不相同...因为每个交互式报告的字段应该不同。

由于这个(只是假设)...他们改变了您访问页面上某个交互式报告的ID的方式。如果您未设置报告的静态ID,则该隐藏字段在HTML中将如下所示:

enter image description here

但是,如果您设置ID,则隐藏字段将如下所示: enter image description here

在这种情况下,要在value属性中获取该数字,您可以执行以下操作:

$v('YOUR_ID_HERE_report_id')
//or
apex.item('YOUR_ID_HERE_report_id').getValue()

通过此选择,您可以随时找到该号码

 select region_id from apex_application_page_regions
 where 
 application_id = :APP_ID AND
 page_id = :APP_PAGE_ID AND
 UPPER(region_name) = UPPER(v_region_name);