更改 APEX 表单中的字段后更新图表

Update chart after changing a field in an APEX form

如何在更改用作图表 pl/sql 语句中的参数的文本 box/select list/etc 中的值后让 APEX 刷新图表(图形) ?

我希望它看起来尽可能专业,并尽量减少必须刷新的页面部分(即 "ajax-like",这是 2018 年的标准)。

请参阅下面的方法 B 以获得最佳解决方案。

方法 A

最简单的选择(不太专业)是将每个感兴趣的文本 box/select list/etc 修改为 submit the page 当文本 box/select list/etc 变化。例如,对于 select 列表,转到其 settings->page action on selection 并将设置更改为 submit page

这种方法有两个主要缺点:

  1. 大部分页面将刷新,这对您的用户来说是不和谐的,

  2. 如果您使用的是插件,或者您使用的 item 类型不支持该方法,那么您就不走运了。

方法 B

下面是一个更复杂的解决方案,可以产生更专业的结果。这个解决方案涉及动态操作,我可能不会在这里完全解释。但是,这些信息应该足以让用户理解。

让我们假设您有两件事:(1) select list 其值用作 (2) chart 的 sql 源语句中的参数。

要让 chart 在您每次通过 select list 做出新选择时更新,您需要:

  1. 为感兴趣的 select list 创建动态操作。您可以通过单击 select 列表,转到动态操作选项卡(闪电)来执行此操作;右键单击该项目;点击select动态动作;给它一个名字并将 event 设置为 change 并将 selection type 设置为 item 并将 item 设置为 select list 的名称你在看

  2. executes pl/sql code 的动态动作创建一个 true action(您可以通过修改 1 中默认创建的 show 动作来完成此操作。) .将 pl/sql 代码设置为 null;。然后在 items to submit 下,指定感兴趣的 select list 的名称。

  3. 创建第二个 true action refreshes region 包含 chart.

您需要确保分配给 2. 的序列比分配给 3. =]

不适用的方法 C

在 Apex 5.something 中,他们添加了一个名为 Cascading List of Values 的功能。此功能允许您指定一个项目的值取决于另一个项目。例如,如果您有一个 select list 允许用户选择一个部门,然后您有第二个 select list 允许您从所选部门中选择一名员工(大概从涉及第一个 select list 中选择的值的查询),您可以告诉 APEX 在更新第一个 select list 时刷新第二个

您可以通过编辑第二个 select list 来完成此操作。在其设置下转到 list of values->cascading LOV parent item(s)。添加第一个 select list 作为 "reverse" 依赖项(又名 "parent")。这将确保任何时候第一个 select list 更新,第二个 select list 也会更新。

无论好坏,图表都没有 cascading LOV parent item(s) 设置。因此,此解决方案不适用于此问题。

  1. 对随事件 "change"
  2. 更改的文本 box/select list/etc 创建动态操作
  3. 创建一个真实的动作并selectpl/sql并写入

    开始 无效的; 结束;

  4. 要提交的页面项目 select 您的项目

  5. 在第一个和 select 刷新之后创建第二个真实动作。然后 select 区域作为受影响的元素和 select 您的图表。请记住,选项 'Fire on initialization' 必须设置为 NO