您可以使用列链接来选择记录并导航到另一个页面,也可以使用单选按钮和页面按钮/链接来执行此操作。我将使用 DEPT 表上的简单报告来演示这两者。
方法一:单选按钮
对于单选按钮,我们可以使用以下命令向报告添加一个附加列apex_item.radiogroup
函数创建一个值为 DEPTNO 的单选按钮:
默认情况下,出于安全原因,无线电组的 HTML 将被转义,这不是您想要的,但很好地说明了它正在做什么:
我们可以通过将列属性更改为“标准报告列”来解决此问题:
现在我们看到:
单击任意行上的单选按钮可将其选中,并取消选择其他行上的按钮。
要导航到包含所选行的另一个页面,我们需要一个按钮来提交带有特殊请求的页面:
单击时,该按钮将提交请求值为“SELECT”(我选择的按钮名称)的页面。因此,我们可以编写一个提交页面进程,以在请求为“SELECT”时触发,找出已选择的单选按钮(如果有),并将选定的 DEPTNO 保存到名为 P34_DEPTNO 的隐藏项。我们通过查看 APEX 数组来找出哪个按钮apex_application.g_f01
我们通过传递选择了1
作为第一个参数apex_item.radiogroup
:
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 不为空,我们可以定义一个导航到新页面的分支。
就是这样。工作量相当大,但如果这是要求的话,就可以完成。
方法二:栏目链接
更简单的方法是放弃单选按钮,只需将报告列之一设为链接:
这会将列(我选择 DNAME)转换为一个链接,该链接将导航到带有所选 DEPTNO 值的新页面:
就是这样!没有隐藏项,没有按钮,没有页面进程,没有分支......