Oracle APEX-将IG列值传递给javascript

我有一个具有链接列的IG,其中目标设置为URL,并且我使用它来调用javascript。

我想要完成的是每当单击链接列时,获取另一个隐藏列的值并将页面项目设置为该值:

javascript:$s('P1_ITEM',#COLUMN2#);alert($v('P1_ITEM'));
但是,如果我仅使用#COLUMN#引用COLUMN2值,我会得到一个javascript错误,如果我用单引号将其括起来,则P1_ITEM的值从字面上设置为#COLUMN2#


解决方案

我建议您首先移动到动态操作,而不是尝试将所有代码放在链接中。此外,我认为按钮比链接更好(并且可以将它们的样式设置为类似于链接)。

首先转到https://apex.oracle.com/ut。导航到Reference>;Button Builder并构建所需的按钮。然后从整个标记字段复制值。

将"链接"列的"类型"更改为"HTML表达式",并将按钮生成器中的HTML粘贴到"HTML表达式"字段中。我设置了按钮的样式,使其看起来像一个链接(正如您所做的那样),向名为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 click,event设置为Click,将Type设置为jQuery Selector,将jQuery Selector设置为.my-button。最后,将事件范围设置为动态,这将在报表刷新时使用事件委托来保持事件绑定工作(请参见this for details)。

在操作中,将操作设置为执行JavaScript代码。在代码字段中输入以下代码:

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"值。我查找JOB列是因为我使用的是EMP表,但是您可以查找您需要的任何列。

您可以在此处了解有关模型方法的更多信息: https://apex.oracle.com/js>;接口>;型号。

相关文章