Oracle Apex:在交互式报告中创建单选按钮的分步方法

Oracle Apex: step by step approach to creating radio buttons in interactive report

是否有一个很好的可视化教程来介绍如何在 Apex 4.2 中创建单选按钮的各个步骤?本教程 Creating a Form in APEX to set Variables in a Query for an Interactive Report 帮助我创建了表单,我正在寻找类似的教程。

在我的应用程序中,我想向我的交互式报告的每一行添加一个单选按钮,选择该按钮后会将用户带到另一个包含不同表格的报告?

非常感谢任何建议。

谢谢

您可以使用列 link 到 select 记录并导航到另一个页面,或者使用单选按钮和页面 button/link 来完成。我将在 DEPT table.

上使用一个简单的报告来演示两者

方法一:单选按钮

对于单选按钮,我们可以使用 apex_item.radiogroup 函数在报表中添加一个附加列,以创建一个值为 DEPTNO 的单选按钮:

默认情况下,出于安全原因,radiogroup 的 HTML 将被转义,这不是您想要的,但很好地说明了它的作用:

我们可以通过将列 属性 更改为“标准报告列”来解决此问题:

现在我们看到:

单击任意行上的单选按钮 select 并取消 select 其他行上的按钮。

要导航到包含 selected 行的另一个页面,我们需要一个按钮来提交带有特殊请求的页面:

单击后,该按钮将提交请求值为“SELECT”(我选择的按钮名称)的页面。所以我们可以编写一个提交页面进程,当请求为“SELECT”时触发,找出哪个单选按钮已被 selected(如果有)并保存 selected DEPTNO 到一个名为 say P34_DEPTNO 的隐藏项。我们通过查看我们通过将 1 作为第一个参数传递给 apex_item.radiogroup:

选择的 APEX 数组 apex_application.g_f01 来找出哪个按钮
if apex_application.g_f01.count > 0 then
   -- Array has been populated i.e. user chose a value
   :p34_deptno := apex_application.g_f01(1);
else 
   -- Array has not been populated i.e. user did not choose a value
   :p34_deptno := null;
end if;

如果 (a) request = 'SELECT' 并且 (b) P34_DEPTNO 不为空,我们可以定义一个导航到新页面的分支。

就是这样。相当多的工作,但如果那是会做的要求。

方法二:列link

更简单的方法是取消单选按钮,只将其中一个报告列变成 link:

这会将列(我选择 DNAME)变成一个 link,导航到新页面并使用 selected DEPTNO 值:

就是这样!无隐藏项,无按钮,无页面处理,无分支...

对于 Apex 5,您必须将 "Escape special characters" 更改为 "No" 而不是将列 属性 更改为 "Standard Report Column":