oracle - 选择更改交互式报告oracle apex时刷新表单
问题描述
我有一个包含两个区域的页面,一个交互式报告和一个表单。
我对报告有一个动态操作,当我单击一行时,它会将项目的值设置为该行的 id。
如何刷新表单以获取与项目中的 (Id) 相关的值?
解决方案
据我所知,表单区域不会刷新,直到 APEX 19.2。您可能希望使用执行 PL/SQL 操作来获取表单项的值。这是一个完整的例子。
- 创建一个新的空白页。我的页面是 26。您需要将以下内容更新为您拥有的页码。
- 创建一个新区域。将Title设置为Employees,将Type设置为Interactive Report,将Table Name设置为EMP,将Static ID设置为emps-reg。
- 选择报告的EMPNO列并将静态 ID设置为empno-col。
- 创建另一个新区域。将Title设置为Employee Details,将Type设置为Form,将Table Name设置为EMP。
- 选择P26_EMPNO项目(在最后一步之后自动创建)。启用Source下的Primary Key设置。
创建动态操作。将Name设置为Employee row clicked,将Event设置为Click,将Selection Type设置为jQuery Selector,将 jQuery Selector 设置为
#emps-reg table:eq(1) tr:not(:eq(0))
,并将Event Scope设置为Dynamic。将事件范围设置为动态将使动态操作在报告刷新后保持工作。
选择在上一步中默认创建的操作。将Action设置为Set Value,将Type设置为JavaScript Expression,并将JavaScript Expression设置为
$(this.triggeringElement).find('td[headers="empno-col"]').text()
。JavaScript 表达式将从
tr
被单击的 开始,向下遍历到td
具有员工 empno 的元素并返回该值。- 右键单击表单区域中的P26_EMPNO项并选择Create Dynamic Action。这将创建一个具有正确配置的事件设置的动态操作。将名称设置为P26_EMPNO 已更改。
选择上一步默认创建的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;
- 在同一操作中,将要提交的页面项目设置为P26_EMPNO。这将在执行代码之前将主键项中的值传输到会话状态。
- 在同一操作中,将Page Items 设置为 Return to P26_ENAME,P26_JOB,P26_MGR,P26_HIREDATE,P26_SAL,P26_COMM,P26_DEPTNO。这会将会话状态中的当前值返回给页面中的项目。
因为您是通过 Ajax 填充项目,所以您可能需要为通常在表单项目中指定的内容添加额外的代码,例如日期或数字格式。
推荐阅读
- python - 如何导入名称中带有破折号“-”的模块而不重命名它
- algorithm - 编程逻辑/伪代码
- python - Beautiful Soup 不能在第一个 div 标签之后刮掉
- c++ - 使用 std::extent 获取多维数组中的元素总数
- android - TextView 的奇怪 constrained_width 行为
- git - 仅将具有特定扩展名的文件推送到 GitHub
- shell - 使用 vultr-cli 在 Vultr 部署后检索实例 ID?
- laravel - 如何在 laravel 中为 10 种类型的用户进行登录?
- c# - 在C#中扫描二维码后如何使用浏览器打开URL?
- r - R:根据最后一次调用的输出递归地指定函数的输入