【发布时间】:2020-04-20 23:55:43
【问题描述】:
如果我使用 &APP_BRCODE 访问该值,我有一个应用程序项目 - APP_BRCODE(不是页面项目)。我可以检索该值,但无法使用 javasctipt 设置该值。 $s('APP_BRCODE',value) 不起作用
【问题讨论】:
如果我使用 &APP_BRCODE 访问该值,我有一个应用程序项目 - APP_BRCODE(不是页面项目)。我可以检索该值,但无法使用 javasctipt 设置该值。 $s('APP_BRCODE',value) 不起作用
【问题讨论】:
仅 Javascript 只能更改已在页面上呈现的项目的值 - 即页面项目。要更改应用程序项的值,需要调用数据库 - 提交页面或进行 AJAX 调用。您可以从 Javascript 代码中进行 AJAX 调用,如下所示:
apex.server.process
( "MY_PROCESS",
{ x01: my_var
},
{ success: function( pData ) {
},
dataType: "text"
}
);
这会将x01 设置为变量my_var 的值并调用AJAX 回调(也称为“按需”)PL/SQL 进程MY_PROCESS。
PL/SQL 进程然后可以设置应用程序项:
:APP_ITEM := apex_application.g_x01;
看起来工作量很大?也许。在不知道为什么要从 Javascript 设置应用程序项的情况下,很难说这是否值得。你可以只设置一个隐藏的页面项吗?
【讨论】:
当我为相同的上下文寻找解决方案时,我最终看到了您的回复。
在动态动作中,
apex.server.process
( "upload_ajax_process",
{ x01: this.browserEvent.originalEvent.detail.serverId
},
{ success: function( pData ) {
},
dataType: "text"
}
);
在处理中,创建了回调函数“upload_ajax_process”,如下所示。 insert 语句将值正确插入到表中,但页面显示项 P12_DOCUMENTURL 未显示该值。我在这里缺少什么?
begin
:P12_DOCUMENTURL := apex_application.g_x01;
insert into tbl_bs_commentsdoc (commentsdocid, documenturl)
values (seq_commentsdoc_commentsdocid.nextval, apex_application.g_x01);
end;
【讨论】: