Oracle APEX版本: 21.1.0
我在一个APEX页面上有许多交互式网格(一周中每天都有一个),我希望将数据保存到APEX集合中。IG_MON交互式网格包含3列,它们的静态ID是:
COL_MON_PROJECT
COL_MON_HOURS
COL_MON_DESCRIPTION
我有一个动态操作(每天),运行一些将IG数据保存到以下页面项中的JavaScript:
P704_MON_PROJECT
P704_MON_HOURS
P704_MON_DESCRIPTION
(然后,在Javascript运行之后,我将Ajax回调进程调用到我的APEX集合的add_member )。
由于列类型为“文本字段”,因此它成功地用于COL_MON_HOURS和COL_MON_DESCRIPTION列。
对于COL_MON_PROJECT列,我将其设置为弹出LOV,其中显示显示的“项目名称”,以及返回值的ID。
当我使用下面的代码保存COL_MON_PROJECT弹出的LOV值时,在会话状态中,我可以看到P704_MON_PROJECT显示为对象对象。
我尝试了几个不同的选择,但我还不够精通JavaScript,使它非常正确!
var col_project;
var col_hours;
var col_description;
var model = apex.region("IG_MON").widget().interactiveGrid("getViews", "grid").model;
col_project = model.getFieldKey("COL_MON_PROJECT");
col_hours = model.getFieldKey("COL_MON_HOURS");
col_description = model.getFieldKey("COL_MON_DESCRIPTION");
model.forEach(function (igrow) {
apex.item("P704_MON_PROJECT").setValue(igrow[col_project]);
apex.item("P704_MON_HOURS").setValue(igrow[col_hours]);
apex.item("P704_MON_DESCRIPTION").setValue(igrow[col_description]);
apex.server.process('POPULATE_COLLECTION_MON', {
pageItems: '#P704_MON_DATE,#P704_MON_PROJECT,#P704_MON_HOURS,#P704_MON_DESCRIPTION'
}, {
dataType: 'text',
success: function (data) {
if (data != 'SUCCESS');
}
});
});发布于 2021-08-23 09:22:42
我用一些console.log消息解决了这个问题,并看到弹出的LOV正在解析为:
apex.item("P704_MON_PROJECT").setValue(igrow[col_project]) =
{v: "229592305603457980799039089331487048885", d: "My Project Name"}我只需要把这个改成:
apex.item("P704_MON_PROJECT").setValue(igrow[col_project].v) =
229592305603457980799039089331487048885发布于 2021-08-23 05:06:26
在js中从IG中获取值的DA很复杂,不知道如何使代码工作。但是,为了诊断js代码,您应该在浏览器控制台中手动运行它,并逐步查看它所做的事情,在那里您还可以了解对象对象的实际情况。
但是对于不同的方法,如果在每一列上创建一个单独的DA,您只需使用:COL_MON_PROJECT(或其他什么)来处理该列的值。
所以周一的桌子上会有三个DAs,一个用于项目,一个用于小时,另一个用于描述。每个都可能有一个动作集值,设置P704_MON_的值.和MON_..。
而且,根据我对您的代码的理解,您看起来使用的是单行交互网格,它填充页面项。为什么不整天只使用一个IG,然后在处理IG的过程中填充集合(如果集合仍然需要的话)。或者,如果你不想每天都要一个IG,为什么不单独填写每一天的页面项目呢?
https://stackoverflow.com/questions/68886977
复制相似问题