javascript - Oracle APEX - 将 IG 列值传递给 javascript
问题描述
我有一个带有链接列的 IG,其中目标设置为 URL,我用它来调用 javascript。
我想要完成的是每当单击链接列时,获取另一个隐藏列的值并将页面项设置为该值:
javascript:$s('P1_ITEM',#COLUMN2#);alert($v('P1_ITEM'));
但是会发生什么,如果我使用 just 引用 COLUMN2 值#COLUMN#
,我会收到一个 javascript 错误,如果我将它用单引号括起来,则 P1_ITEM 的值实际上会设置为#COLUMN2#
.
解决方案
我建议的第一件事是您转向动态操作,而不是尝试将所有代码放在链接中。另外,我认为按钮比链接更好(并且可以将它们设置为看起来像链接)。
首先访问https://apex.oracle.com/ut。导航到 Reference > Button Builder 并构建所需的按钮。然后复制整个标记字段中的值。
将 Link 列的Type更改为HTML Expression,然后将 Button Builder 中的 HTML 粘贴到HTML Expression字段中。我将按钮的样式设置为看起来像一个链接(正如你所拥有的那样),向名为my-button的类属性添加了一个自定义类,并为主键值添加了一个数据属性(我的表是 EMP,所以 PK 是EMPNO)。最后看起来像这样:
<button type="button" class="t-Button t-Button--link my-custom-button" data-id="&EMPNO.">Click me!</button>
给交互式网格一个静态 ID值my-ig。
完成后,创建一个新的动态动作。将Name设置为.my-button clicked,将Event设置为Click,将 Selection Type设置为jQuery Selector,将jQuery Selector设置为.my-button。最后,将Event Scope设置为Dynamic,如果报告刷新,它将使用事件委托来保持事件绑定工作(有关详细信息,请参阅此内容)。
在操作中,将Action设置为Execute JavaScript Code。在代码字段中输入以下代码:
var id = $(this.triggeringElement).data('id');
var model = apex.region('my-ig').call('getViews').grid.model;
var record = model.getRecord(id);
var job = model.getValue(record, 'JOB');
$s('P1_ITEM', job);
alert($v('P1_ITEM'));
这段代码首先使用 jQuery 的data
方法从按钮的 data- 属性中获取主键的值。接下来,获得对IG使用的模型的引用。然后getRecord
调用模型的方法并传入主键值。最后,模型的getValue
方法用于从记录中获取'JOB'值。因为我使用的是 EMP 表,所以我使用了 JOB 列,但是你可以使用任何你需要的列。
您可以在此处了解有关模型方法的更多信息: https ://apex.oracle.com/js > Interfaces > Model。
推荐阅读
- javascript - 我需要 Javascript 来识别图像文件类型
- jsf - Primefaces filterBy 覆盖其他数据表
- javascript - vue中可以使用函数的返回来定义一个div的样式吗?
- delphi - 尝试连接到 ADS 数据库时出现 315 错误
- next.js - 如何更改面包屑上分隔符的颜色
- reactjs - npm start 与 npm run start:产品
- python - 将请求内容写入CSV文件python代码
- loopback - Loopback 3 updateAll 过滤器不起作用
- javascript - 如何使用 Javascript 在 Android 上实现“增强现实”功能检测?
- c++ - 如何使用 Howard Hinnant 的日期库(或等效的 C++20 STL 功能)解析“2021.147.17.33.45”