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

2022-01-21 00:00:00 radio-button oracle oracle-apex

是否有一个很好的可视化教程来介绍如何在 Apex 4.2 中创建单选按钮的各个步骤?本教程 在 APEX 中创建表单以在交互式报表的查询中设置变量帮助我创建了表单,我正在寻找类似的表单.

Is there a good visual tutorial that takes through the various steps on how to create radio buttons in Apex 4.2? This tutorial Creating a Form in APEX to set Variables in a Query for an Interactive Report helped me in creating forms and I’m looking for a similar one.

Within my application, I would like to add a radio button to each row of my interactive report which when selected would take the user to another report combining different tables?

Within my application, I would like to add a radio button to each row of my interactive report which when selected would take the user to another report combining different tables?

非常感谢任何建议.

谢谢

推荐答案

您可以使用列链接来选择记录并导航到另一个页面,或者使用单选按钮和页面按钮/链接来执行此操作.我将使用 DEPT 表上的简单报告来演示这两种方法.

You could either use a column link to select the record and navigate to another page, or a radio button and a page button/link to do it. I'll demonstrate both using a simple report on the DEPT table.

方法一:单选按钮

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

For the radio button we can add an additional column to the report using the apex_item.radiogroup function to create a radio button whose value is the DEPTNO:

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

By default, the HTML of the radiogroup will be escaped for security reasons, which is not what you want but illustrates what it is doing quite nicely:

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

We can fix that by changing the column property to "Standard Report Column":

现在我们看到了:

单击任意行上的单选按钮将选中它并取消选择其他行上的按钮.

Clicking on the radio button on any row selects it and deselects the buttons on other rows.

要导航到具有所选行的另一个页面,我们需要一个按钮来提交具有特殊请求的页面:

To navigate to another page with the selected row we need a button to submit the page with a special request:

点击后,该按钮将提交请求值为SELECT"的页面.(我选择的按钮名称).因此,我们可以编写一个提交页面进程以在请求为SELECT"时触发,找出哪个单选按钮已被选中(如果有),并将选定的 DEPTNO 保存到名为 P34_DEPTNO 的隐藏项中.我们通过查看我们通过将 1 作为第一个参数传递给 apex_item.radiogroup 来选择的 APEX 数组 apex_application.g_f01 来找出哪个按钮:

When clicked, that button will submit the page with a Request value of "SELECT" (the button name I chose). So we can write an on-submit page process to fire when the request is "SELECT", find out which radio button has been selected (if any) and save the selected DEPTNO to a hidden item called say P34_DEPTNO. We find out which button by looking at the APEX array apex_application.g_f01 which we chose by passing 1 as the first parameter to 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 不为空,我们可以定义一个导航到新页面的分支.

Then we can define a branch that navigates to the new page if (a) request = 'SELECT' and (b) P34_DEPTNO is not null.

就是这样.相当多的工作,但如果这是需要的话.

And that's it. Quite a lot of work, but if that's the requirement that will do it.

方法二:列链接

更简单的方法是省去单选按钮,只需将报告列之一变成链接:

The simpler way is to dispense with the radio buttons and just make one of the report columns into a link:

这会将列(我选择 DNAME)变成一个链接,该链接导航到带有所选 DEPTNO 值的新页面:

This turns the column (I chose DNAME) into a link that navigates to the new page taking the selected DEPTNO value with it:

就是这样!没有隐藏项,没有按钮,没有页面进程,没有分支……

That's it! No hidden item, no button, no page process, no branch...

相关文章