0

简化:假设您的应用中有一个包含 11 个区域的页面。10 个区域组织在选项卡中(1 个类型为“区域显示选择器”的区域,其中 10 个启用区域显示选择器的子区域)和 1 个所有选项卡共有的区域(禁用“区域显示选择器”的子区域)。公共区域包含一个项目,您希望该项目仅出现在 10 个选项卡中的 5 个中。

在搜索和阅读文档后,我了解到 APEX 不提供执行此操作的本地方式。我认为使用服务器端条件您可以确定该项目是否显示在页面上,但不能选择性地显示在不同的区域(如果不是,请纠正我)。为了解决这个问题,我尝试了几种选择:

选项 1:删除公共区域并将项目复制 5 次,每次都在我希望它出现的区域(选项卡)内。

选项 2(有效):为每个区域(选项卡)分配静态 ID 并创建 10 个动态操作,每个区域(选项卡)一个:

何时:“单击”“JavaScript”表达式:

$("a[href='#region_static_id']");

执行 JavaScript 代码:

apex.item("P23_COMMON_ITEM").hide(); // when you want this item not to be displayed in the common region 

或者

apex.item("P23_COMMON_ITEM").show(); // when you want this item to be shown in the common region 

这两个选项都有效,但我认为这两个选项都可能导致性能问题,特别是如果不是只有一个项目,而是有很多项目,甚至是表而不是项目。我会继续调查。如果可能的话,我希望得到专家的建议。

提前致谢。

4

1 回答 1

0

您可以创建一个新区域,其中包含要在 10 个区域中的 5 个中显示的项目。然后将该区域放在区域显示选择器的顶部,并为该区域选择一些模板 blank with attributes以使其无边框等。该区域和项目的静态 id 可以与 JQUERYappend一起使用一些代码片段,例如: $("#yourregionid").append("#youritemid"); 然后作为最后一步,您可以PAGE LOAD为您希望显示项目的每个区域创建动态操作并使用该 JQUERY 代码。

注意:在将静态 id 提供给 region&item 以调整定位和 UI 后,您可以在浏览器的控制台上执行该 JQUERY 代码。

另一个注意事项:由于数据只会从 db 收集一次,我认为这样不会产生任何性能问题。很可能有其他方法可以实现这一点,但要小心 DB-Apex 交互计数。换句话说,创建 5 个具有相同来源的页面项目会起作用,但会使数据收集复杂度增加 5 倍。

于 2022-01-28T12:13:38.173 回答