【问题标题】:Oracle Apex: Region Not Hiding after ValidationOracle Apex:验证后区域未隐藏
【发布时间】:2021-05-10 15:56:20
【问题描述】:

我有两个区域,如果字段为空,第二个区域应该显示/隐藏。 我尝试了不同的方法,但验证后第二个区域不会隐藏。

  • 按钮验证字段:在数据库中搜索值是否存在
  • 如果值存在填充隐藏字段(val_id)
  • 如果 val_id 为空,按钮中的动态操作隐藏区域

验证发生,但区域不隐藏:

【问题讨论】:

  • 按钮上的操作是什么 - 您在提交页面吗?如果是这样,那么这将无法按您的预期工作。请提供有关您的问题的更多详细信息。什么是“val_id” - 这是一个页面项目吗?
  • @KoenLostrie 是的,按钮提交页面,:VAL_ID 是第二个区域的字段,如果找到 ESN 上的值,我填充或输入 null。单击按钮时,我还验证了 ESN 字段。我想要的也是隐藏下面的区域

标签: oracle-apex oracle-apex-5.1


【解决方案1】:

这就是顶点的工作原理:

  1. 呈现页面
  2. 用户操作屏幕上的数据
  3. 页面已提交并执行验证/流程。

如果您有兴趣,该文档会更详细地告诉您。动态操作允许您在阶段 (2) 中以声明方式添加功能,因为您需要访问 DOM。提交页面 (3) 后,您将无法再操作 DOM,因此无法再使用动态操作。为了执行验证,您必须提交页面。 不幸的是,我没有 apex5.1 实例,但下面的逻辑应该适合你。

有两种方法可以解决您的问题

  1. 使用动态操作来执行搜索。设置隐藏页面项目(例如,如果找到结果,则 P1_SHOW_DETAILS 为“Y”,如果未找到任何结果,则为“N”。然后使用显示/隐藏操作对 P1_SHOW_DETAILS 的更改创建第二个动态操作
  2. 不要使用动态操作/验证。使用页面项 P1_SHOW_DETAILS,它在提交后在页面进程中设置,并在分支中设置了 P1_SHOW_DETAILS 值并分支到同一页面。然后在区域上放置一个服务器端条件,仅在 P1_SHOW_DETAILS = 'Y' 时渲染。 在这两种情况下,您都必须找到另一种方式来显示“ESN 不存在”消息(您可以为此使用警报区域)。

附带说明:您有一个名为“VAL_ID”的页面项目。使用命名约定 P_ 是一种很好的做法。页面项目在整个应用程序中必须是唯一的,如果您必须在查看“VAL_ID”的位置调试代码,您将如何知道要查看哪个页面。还有很多其他原因,但这超出了这个问题的范围。

【讨论】:

  • 感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多