【发布时间】:2018-09-18 17:54:20
【问题描述】:
我有一个包含选择列表 (:P10_DROPDOWN) 的表单,该列表的值通过 SQL 定义:
SELECT
display_name,
value_id
FROM
vw_dropdown_options;
作为一个 pre-render-before-header-process 我有以下 PL/SQL 来预填充:P10_DROPDOWN:
begin
SELECT value_id
INTO :P10_DROPDOWN
FROM vw_dropdown_option_mapping
WHERE vw_dropdown_option_mapping_id = :P10_DROPDOWN_OPTION_MAPPING_ID;
end;
此时我的表单出现在我的页面上,一切正常。但是,当用户单击按钮时,我需要触发一个自定义过程,因此在我页面上的一个按钮上,我定义了一个 onClick 事件来触发这个 pl/sql 块:
APEX_DEBUG.INFO ('P10_DROPDOWN_OPTION_MAPPING_ID ' || :10_DROPDOWN_OPTION_MAPPING_ID);
APEX_DEBUG.INFO ('P10_DROPDOWN ' || :P10_DROPDOWN);
NP_SAVE_MAPPING_VALUE (
DROPDOWN_OPTION_MAPPING_ID => :P10_DROPDOWN_OPTION_MAPPING_ID,
NEW_DROPDOWN_VALUE_ID => :P10_DROPDOWN
);
这是我第一次注意到我的问题; onClick 为 :P10_DROPDOWN 注销的值是最初通过我的 pre-render-before-header-process 设置的值,而不是我通过下拉菜单选择的值。
我尝试将下拉列表中的 source.used 值设置为“始终”和“仅”。我还用基于源的单值 SQL 查询替换了我的 pre-render-before-header-process。也不允许我的下拉菜单通过下拉菜单更改会话值。
我是否遗漏了有关这些会话值的某些内容?
【问题讨论】:
-
顺便说一句;存储过程在单独运行时起作用。如果我使用 AJAX 请求,我也可以让它工作,但这似乎过于繁重,只是在提交字段时启动一个简单的存储过程。
标签: oracle oracle-apex oracle-apex-5.1