1

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 回调进程将 add_member 添加到我的 APEX 集合中)。

由于列类型为“文本字段”,因此它成功地适用于 COL_MON_HOURS 和 COL_MON_DESCRIPTION 列。

对于COL_MON_PROJECT列,我已将其设置为 Popup LOV,其中显示“项目名称”以供显示,并以 ID 为返回值。

当我使用下面的代码保存 COL_MON_PROJECT Popup LOV 值时,在会话状态下我可以看到 P704_MON_PROJECT 显示为 [object Object]。

我尝试了几种不同的选择,但我对 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');

      }

   });

});
4

2 回答 2

2

我通过一些 console.log 消息解决了这个问题,并看到 Popup 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-23T09:22:42.327 回答
1

在 js 中从 IG 获取值的 DA 很复杂,不确定如何使您的代码正常工作。但是要诊断js代码,你应该在浏览器控制台手动运行它,一步一步看它做了什么,你也可以在那里探索[object Object]到底是什么。

但是对于不同的方法,如果在每一列上创建一个单独的 DA,则可以使用 :COL_MON_PROJECT(或其他任何内容)来处理列的值。

因此,星期一的表格将包含三个 DA,一个用于项目,一个用于小时,一个用于描述。每个可能都有一个动作设置值,设置 P704_MON_... 和 MON_... 的值

此外,根据我对您的代码的理解,您看起来正在使用单行交互式网格,它填充页面项目。为什么不整天只拥有一个 IG,然后在处理 IG 时填充集合(如果仍然需要集合)。或者,如果您不想整天都有一个 IG,为什么不单独填写每天的页面项目呢?

于 2021-08-23T05:06:26.730 回答