Oracle apex 如何在apex oracle的交互式网格中强制添加至少一行

Oracle apex 如何在apex oracle的交互式网格中强制添加至少一行,oracle-apex,Oracle Apex,我有两个区域,一个表单和一个交互网格,就像一个主细节(公司和公司联系人)如何使交互网格成为强制性的,用户不能提交页面,他/她需要在交互网格中至少添加一行, 我可以这样做,或者我需要将交互式网格更改为收集并计算验证中的行数这一个有点棘手,因为流程和验证与交互式网格的工作方式不同(每个提交的行执行一次)。为了解决这个问题,我将使用一个页面项和一个与之相关的验证 此解决方案的基本思想基于这样一个事实,即新行将不具有主键值。下面是复制的步骤(我的示例在第14页,根据需要更新以下内容) 创建交互式栅格(I

我有两个区域,一个表单和一个交互网格,就像一个主细节(公司和公司联系人)如何使交互网格成为强制性的,用户不能提交页面,他/她需要在交互网格中至少添加一行,
我可以这样做,或者我需要将交互式网格更改为收集并计算验证中的行数

这一个有点棘手,因为流程和验证与交互式网格的工作方式不同(每个提交的行执行一次)。为了解决这个问题,我将使用一个页面项和一个与之相关的验证

此解决方案的基本思想基于这样一个事实,即新行将不具有主键值。下面是复制的步骤(我的示例在第14页,根据需要更新以下内容)

  • 创建交互式栅格(IG)区域。主键列应该是Query Only(这确保新行的主键列为null)
  • 创建名为P14\u NULL\u的隐藏页面项。将“服务器端条件”下的类型设置为“从不”,以便它永远不会在页面上呈现
  • 创建提交后(验证前)流程。此过程与IG无关,因此它只会触发一次。将PL/SQL代码属性设置为:

    :P14_NULL_FOUND := 'NO';
    
    这将在下一个进程之前清除页面项的值

  • 创建另一个在上一个提交后运行的提交后流程。将可编辑区域设置为IG。然后将PL/SQL代码设置为如下所示:

    if :PK_COLUMN_IN_IG is null
    then
      :P14_NULL_FOUND := 'YES';
    end if;
    
    您需要用IG中主键列的名称替换“:PK_COLUMN_IN_IG”,例如“:EMPNO”。对于IG中每个提交的行,此过程将运行一次。如果主键列的值为null,则表示用户添加了新行,并且P14\u null\u found的值将设置为“YES”

  • 创建一个新的验证。该验证不会与IG关联,因此它只会触发一次。将类型设置为PL/SQL表达式。将PL/SQL表达式设置为:

    :P14_NULL_FOUND != 'NO'
    
    然后将错误消息设置为相关信息


  • 此时,您应该能够运行该页面并验证流程和验证是否正常工作。

    由于流程和验证与交互式网格的工作方式(它们每提交一行执行一次),因此此操作有点棘手。为了解决这个问题,我将使用一个页面项和一个与之相关的验证

    此解决方案的基本思想基于这样一个事实,即新行将不具有主键值。下面是复制的步骤(我的示例在第14页,根据需要更新以下内容)

  • 创建交互式栅格(IG)区域。主键列应该是Query Only(这确保新行的主键列为null)
  • 创建名为P14\u NULL\u的隐藏页面项。将“服务器端条件”下的类型设置为“从不”,以便它永远不会在页面上呈现
  • 创建提交后(验证前)流程。此过程与IG无关,因此它只会触发一次。将PL/SQL代码属性设置为:

    :P14_NULL_FOUND := 'NO';
    
    这将在下一个进程之前清除页面项的值

  • 创建另一个在上一个提交后运行的提交后流程。将可编辑区域设置为IG。然后将PL/SQL代码设置为如下所示:

    if :PK_COLUMN_IN_IG is null
    then
      :P14_NULL_FOUND := 'YES';
    end if;
    
    您需要用IG中主键列的名称替换“:PK_COLUMN_IN_IG”,例如“:EMPNO”。对于IG中每个提交的行,此过程将运行一次。如果主键列的值为null,则表示用户添加了新行,并且P14\u null\u found的值将设置为“YES”

  • 创建一个新的验证。该验证不会与IG关联,因此它只会触发一次。将类型设置为PL/SQL表达式。将PL/SQL表达式设置为:

    :P14_NULL_FOUND != 'NO'
    
    然后将错误消息设置为相关信息


  • 此时,您应该能够运行页面并验证流程和验证是否正常工作。

    您说过用户无法提交页面。为什么不呢?也许最简单的方法是在提交时验证值?我将提供一个采用这种方法的答案。您说过用户无法提交页面。为什么不呢?也许最简单的方法是在提交时验证值?我将提供一个采用这种方法的答案。感谢各位的支持,我还有一个问题,我如何才能更改上述警报消息中的名称,172.1.1.12说我如何才能将其更改为CRM,我说我没有使用上述
    警报。#5中的验证错误消息显示为APEX警报,不应具有“主机说”标题。也许您在其他地方添加了一个
    警报
    ?无论如何,你不能改变这一点。您可以使用
    apex.message.alert
    代替,它使用jQuery对话框消息,但没有您不想要的标题:哦,对不起,这是另一个问题,我知道您没有使用alter,我明白了。使用上面的链接了解
    apex.message.alert
    ,并使用它代替
    alert
    。感谢各位的支持,我还有一个问题,如何更改上面警报消息中的名称,172.1.1.12说我如何将其更改为CRM说我没有使用上面的
    警报。#5中的验证错误消息显示为APEX警报,不应具有“主机说”标题。也许您在其他地方添加了一个
    警报
    ?无论如何,你不能改变这一点。您可以使用
    apex.message.alert
    代替,它使用jQuery对话框消息,但没有您不想要的标题:哦,对不起,这是另一个问题,我知道您没有使用alter,我明白了。使用上面的链接了解
    apex.message.alert
    ,并使用它代替
    alert