首页 > 解决方案 > 选择更改交互式报告oracle apex时刷新表单

问题描述

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

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

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

标签: oracleoracle-apex

解决方案


据我所知,表单区域不会刷新,直到 APEX 19.2。您可能希望使用执行 PL/SQL 操作来获取表单项的值。这是一个完整的例子。

  1. 创建一个新的空白页。我的页面是 26。您需要将以下内容更新为您拥有的页码。
  2. 创建一个新区域。将Title设置为Employees,将Type设置为Interactive Report,将Table Name设置为EMP,将Static ID设置为emps-reg
  3. 选择报告的EMPNO列并将静态 ID设置为empno-col
  4. 创建另一个新区域。将Title设置为Employee Details,将Type设置为Form,将Table Name设置为EMP
  5. 选择P26_EMPNO项目(在最后一步之后自动创建)。启用Source下的Primary Key设置。
  6. 创建动态操作。将Name设置为Employee row clicked,将Event设置为Click,将Selection Type设置为jQuery Selector,将 jQuery Selector 设置为#emps-reg table:eq(1) tr:not(:eq(0)),并将Event Scope设置为Dynamic

    将事件范围设置为动态将使动态操作在报告刷新后保持工作。

  7. 选择在上一步中默认创建的操作。将Action设置为Set Value,将Type设置为JavaScript Expression,并将JavaScript Expression设置为$(this.triggeringElement).find('td[headers="empno-col"]').text()

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

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

    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. 在同一操作中,将Page Items 设置为 Return to P26_ENAME,P26_JOB,P26_MGR,P26_HIREDATE,P26_SAL,P26_COMM,P26_DEPTNO。这会将会话状态中的当前值返回给页面中的项目。

因为您是通过 Ajax 填充项目,所以您可能需要为通常在表单项目中指定的内容添加额外的代码,例如日期或数字格式。


推荐阅读