在页面加载 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 的值将被清除,如果该页面项目存在于其他页面上,这可能会导致意外行为。
我试图在一开始就在页面加载时设置页面元素的值。 该值取决于另一个已从数据库中检索并已在开始时设置的元素。
为了设置 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)
现在页面项没有设置的问题估计是别的原因了。尽量提供有关该页面的尽可能多的信息,以便我们了解为什么未正确设置。您 运行 页面处于调试状态吗?这应该让您了解正在发生的事情。
旁注:
- 不应在应用程序中使用函数
V
。创建它是为了允许在应用程序上下文之外引用顶点项值,例如在存储过程或视图中。使用V
函数存在性能问题,应尽可能避免。在应用程序中,只需使用绑定变量语法(:P1_ITEM
)来引用和设置变量值。 P1_PAGE_ITEM
是如何设置的?作为最佳实践,尽量避免引用其他页面上的页面项目。P1_PAGE_ITEM
只应在第 1 页上引用和操作,依此类推。使用分支或链接,您可以在第 17 页设置相应的项目P17_PAGE_ITEM
。这将为您以后节省大量调试时间。此外,如果您清除第 1 页上的缓存,那么 P1_PAGE_ITEM 的值将被清除,如果该页面项目存在于其他页面上,这可能会导致意外行为。