Oracle APEX:类型错误:单击按钮时 apex.region(...) 为空

问题描述 投票:0回答:1

我有一个交互式网格,我需要将一堆选定记录中的字段批量更新为当前日期。

我尝试复制这篇文章中的建议https://ruepprich.wordpress.com/2017/03/23/bulk-updating-interactive-grid-records/但我的javascript在第一步中运行错误 -找不到该区域(错误 TypeError: apex.region(...) is null)

:D

我已经离开 APEX 和编码有一段时间了,所以我在这方面有点挣扎。

我的区域名为 breachbulkupdate,我的列名为 CORRESPONDENCE_SENT,我创建了一个按钮,单击后即可运行以下 JavaScript 代码

var record;

var region = apex.region("breachbulkupdate");
console.log(region);

//Identify the particular interactive grid
var ig$     = apex.region("breachbulkupdate").widget();

//Fetch the model for the interactive grid
var grid    = ig$.interactiveGrid("getViews","grid");

//Fetch the model for the interactive grid
var model   = ig$.interactiveGrid("getViews","grid").model;

//Fetch selected records
var selectedRecords = apex.region("breachbulkupdate").widget().interactiveGrid("getViews","grid").view$.grid("getSelectedRecords");

//Set current date as correspondence sent date
var sentDate = new Date();

//Loop through selected records and update value of the salary column
for (i=0; i < selectedRecords.length; i++) {

   //Get the record
   record = model.getRecord(selectedRecords[i][0]);

   //Set Correspondence Sent Date
   model.setValue(record,"CORRESPONDENCE_SENT", sentDate);

}

您能帮忙吗?

谢谢,

吉列尔梅

oracle-apex
1个回答
0
投票

那是一个非常古老的博客......我认为从那时起语法发生了很大的变化。 下面是一个增加 EMP 示例表 IG 中所选记录工资的示例(静态 ID 为“emp”):

var i, records, record, sal, model,
        view = apex.region("emp").call("getCurrentView");

let percent = 10

    if ( view.supports.edit ) { // make sure this is the editable view
        percent = percent / 100;
        model = view.model;
        records = view.getSelectedRecords();
        for ( i = 0; i < records.length; i++ ) {
            record = records[i];
            sal = parseFloat(model.getValue(record, "SAL"));
            if ( !isNaN(sal) ) {
                sal = sal + sal * percent;
                model.setValue(record, "SAL", "" + sal); // turn the number back into a string!
            }
        }
    }

此示例是从 ig Cookbook v6 应用程序的第 9 页复制的(谷歌 ig Cookbook 并从 John Snyders 网站下载/安装该应用程序。v6 是最新版本)。

--更新: static id 是实现这一点的关键。在上面的示例中,我的交互式网格的静态 ID 是“emp”,这就是它的引用方式 (

apex.region("emp")
)。

这可以使用一些 JavaScript 命令在浏览器控制台中轻松测试。

观察

apex.regions
列出了页面上的区域。
apex_region("x")
返回 null,因为该区域不存在,并且
apex_region("emp")
返回区域对象。第四行引用了一个不存在的区域,该区域会引发您所看到的错误。

© www.soinside.com 2019 - 2024. All rights reserved.