我有一个包含一堆记录的交互式网格,并且我想在页面上设置一个按钮,以更改当前所选所有记录中的一列。
运行APEX 5.1,IG有一整列,我只想更改其中一列,但是在一整行上,所以我确实需要一个按钮。该表上的主键由5个字段组成。
我真的不太了解Javascript,所以我不知道出了什么问题或如何最好地解决它。
我在单击按钮时设置了一个动态动作来执行Javascript,并且所选元素是名为config的区域。
var g = apex.region('config').widget().interactiveGrid('getViews','grid');
var r = g.getSelectedRecords();
for(i = 0; i < r.length; i++) {
g.model.setValue(r[i], 'EFCTV_END_DT', 'sysdate');
}
其中EFCTV_END_DT是列名,而sysdate是该列需要更新到的值。
运行此代码后,出现此错误:
Ajax调用返回了服务器错误ORA-20987:APEX-ERR-1002在应用程序“ 220”中找不到项目“ C100812889833598308”的项目ID。 -意外错误,无法在应用程序或页面级别上找到项目名称。为。
有人可以帮我实现这个吗?
找到了解决此问题的方法:
APEX并未确定sysdate的含义。
将Javascript代码更改为:
var g = apex.region('config').widget().interactiveGrid('getViews','grid');
var r = g.getSelectedRecords();
var monthNames =["JAN","FEB","MAR","APR",
"MAY","JUN","JUL","AUG",
"SEP", "OCT","NOV","DEC"];
var today = new Date();
var dd = today.getDate();
var mm = monthNames[today.getMonth()];
var yyyy = today.getFullYear();
today = dd+'-'+mm+'-'+yyyy;
for(i = 0; i < r.length; i++) {
g.model.setValue(r[i],'EFCTV_END_DT',today);
}
现在,它正在按预期方式工作。