选择时刷新窗体更改交互式报表 oracle 顶点



我有一个包含两个区域的页面,一个交互式报告和一个表单。

我对报表有一个动态操作,当我单击一行时,它会将项目的值设置为行的 id。

如何刷新表单,以获取与项目中的 (Id( 相关的值?

据我所知,表单区域不会刷新,无论如何都会刷新到 APEX 19.2。您可能希望使用执行 PL/SQL 操作来获取表单项的值。下面是一个完整的示例。

  1. 创建一个新的空白页。我的页面是26。您需要将以下内容更新为您拥有的页码。
  2. 创建新区域。将"标题"设置为"员工",将"类型"设置为">交互式报表",将"表名称"设置为">EMP",将">静态 ID"设置为"emps-reg"。
  3. 选择报表的"EMBNO"列,并将">静态 ID"设置为"empno-col"。
  4. 创建另一个新区域。将"标题"设置为">员工详细信息",将"类型"设置为"窗体",将"表名称">设置为">EMP"。
  5. 选择P26_EMPNO项(在上一步之后自动创建(。启用"源">下的"主键"设置。
  6. 创建动态操作。将">名称"设置为">员工单击的行"、"要单击的事件"、">选择类型"设置为"jQuery 选择器"、"jQuery 选择器"设置为"#emps-reg table:eq(1) tr:not(:eq(0))",将">事件范围"设置为"动态"。

    将"事件范围"设置为"动态"将在刷新报表后保持动态操作正常工作。

  7. 选择在上一步中默认创建的操作。将"操作"设置为"设置值",将"键入"键入"JavaScript表达式"设置为"$(this.triggeringElement).find('td[headers="empno-col"]').text()"。

    JavaScript 表达式将从单击的tr开始,向下遍历到具有员工 empno 的td元素并返回该值。

  8. 右键单击窗体区域中的P26_EMPNO项,然后选择">创建动态操作"。这将创建一个动态操作,并正确配置事件设置。将"名称"设置为P26_EMPNO已更改
  9. 选择在上一步中默认创建的操作。将"操作"设置为"执行 PL/SQL 代码",然后在 PL/SQL 代码中输入以下代码:

    select ename, job, mgr, hiredate, sal, comm, deptno
    into :P26_ENAME, :P26_JOB, :P26_MGR, :P26_HIREDATE, :P26_SAL, :P26_COMM, :P26_DEPTNO
    from emp
    where empno = :P26_EMPNO;
    
  10. 在同一操作中,将">页面项目"设置为"提交P26_EMPNO"。这会在执行代码之前将主键项中的值传输到会话状态。
  11. 在同一操作中,将">页面项目"设置为"返回到P26_ENAME,P26_JOB,P26_MGR,P26_HIREDATE,P26_SAL,P26_COMM,P26_DEPTNO"。这会将会话状态中的当前值返回到页面中的项目。

由于您是通过 Ajax 填充项的,因此可能需要为通常在表单项中指定的内容添加其他代码,例如日期或数字格式。

您可以创建一个动态操作 (DA(,该操作在项目中的 ID 发生更改时触发,然后刷新表单。

创建 DA。将DA的"时间"属性的"事件"设置为"更改","选择类型"设置为"项目",然后选择保存ID的项目。

将"真实操作"设置为"刷新"并选择"区域"作为"受影响的元素",然后选择要引用的特定区域,这是您的表单。

现在,当 ID 项的值更改时,将刷新窗体。

最新更新