我有一个交互式网格,我需要将一堆选定记录中的字段批量更新为当前日期。
我尝试复制这篇文章中的建议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);
}
您能帮忙吗?
谢谢,
吉列尔梅
那是一个非常古老的博客......我认为从那时起语法发生了很大的变化。 下面是一个增加 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")
返回区域对象。第四行引用了一个不存在的区域,该区域会引发您所看到的错误。