我建议的第一件事是您转向动态操作,而不是尝试将所有代码放在链接中。另外,我认为按钮比链接更好(并且可以将它们设置为看起来像链接)。
首先访问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。