在页面加载 oracle apex 上设置页面项目值

Set Page Item Value on Page load oracle apex

我试图在一开始就在页面加载时设置页面元素的值。 该值取决于另一个已从数据库中检索并已在开始时设置的元素。

为了设置 id,我创建了一个函数,我调用这个函数来实现页面加载时的动态操作,如下所示:

declare
id number;

begin

id:= set_ID(V('P1_page_item')); 
apex_util.set_session_state('P17_ID',id);

end;

但是页面项目的值没有被设置。 您对如何在页面加载时设置页面项值有任何建议吗?

我会用

id := set_ID(:P1_PAGE_ITEM); 

此外,您是否将动态操作设置为 初始化时触发?我想你应该。

有多种方法可以在页面加载时设置页面项目的值。您可以使用页面进程、计算、页面项的默认值或页面项的源值。动态动作也是可能的,但我从来没有这样做过...

我个人认为计算是为页面项目设置值的最简洁的方法。它就是为了这个——计算一个项目的价值。在您的情况下,您可以为源 set_ID(:P1_PAGE_ITEM)

类型表达式的项目 P17_ID 创建一个计算

现在页面项没有设置的问题估计是别的原因了。尽量提供有关该页面的尽可能多的信息,以便我们了解为什么未正确设置。您 运行 页面处于调试状态吗?这应该让您了解正在发生的事情。

旁注:

  • 不应在应用程序中使用函数 V。创建它是为了允许在应用程序上下文之外引用顶点项值,例如在存储过程或视图中。使用 V 函数存在性能问题,应尽可能避免。在应用程序中,只需使用绑定变量语法(:P1_ITEM)来引用和设置变量值。
  • P1_PAGE_ITEM 是如何设置的?作为最佳实践,尽量避免引用其他页面上的页面项目。 P1_PAGE_ITEM 只应在第 1 页上引用和操作,依此类推。使用分支或链接,您可以在第 17 页设置相应的项目 P17_PAGE_ITEM。这将为您以后节省大量调试时间。此外,如果您清除第 1 页上的缓存,那么 P1_PAGE_ITEM 的值将被清除,如果该页面项目存在于其他页面上,这可能会导致意外行为。