只读条件不起作用
Read-only condition not working
我正在开发 Oracle Application express (APEX 4.2) 应用程序。
其中一个页面控件(文本框,title
)具有 "PL/SQL Expression" 只读条件:
:APP_PROJECT_READ_ONLY = 'YES'
:APP_PROJECT_READ_ONLY
是一个应用程序项,它是根据页面加载时触发的动态操作 on_load
设置的:
DECLARE
CURR_USER VARCHAR2(50);
BEGIN
IF :REQUEST = 'NEW' THEN
:APP_PROJECT_ID := 0;
:APP_PROJECT_READ_ONLY := 'NO';
ELSE
:APP_PROJECT_ID := :P2_ID;
SELECT OWNER INTO CURR_USER
FROM PROJECTS
WHERE ID = :APP_PROJECT_ID;
IF CURR_USER = :APP_USER THEN
:APP_PROJECT_READ_ONLY := 'NO';
ELSE
:APP_PROJECT_READ_ONLY := 'YES';
END IF;
END IF;
EXCEPTION WHEN NO_DATA_FOUND THEN
NULL;
END;
检查会话状态显示:APP_PROJECT_READ_ONLY
的值是正确的,但似乎并不能驱动title
是否只读:
- 如果我将
on_load
的 "page items to return" 留空,那么 title
始终是可编辑的。
- 但是,如果我将它设置为
title
,那么 title
将始终是只读的,而且它的源代码控制不起作用,它留空(在以前的情况下它工作正常).
我该如何解决?
你的问题是时间顺序。
页面呈现,条件评估,然后您在浏览器页面加载时计算您的应用程序项。
将您的代码移动到计算中,可能在区域之前,因此作为页面呈现的一部分完成。
REQUEST 值只能在页面处理中有机地使用,因此除非您明确设置它,否则可能需要注意。
您还应考虑尽可能使用声明性操作。
www.grassroots-oracle.com/2013/05/performance-of-apex-conditions.html
我正在开发 Oracle Application express (APEX 4.2) 应用程序。
其中一个页面控件(文本框,title
)具有 "PL/SQL Expression" 只读条件:
:APP_PROJECT_READ_ONLY = 'YES'
:APP_PROJECT_READ_ONLY
是一个应用程序项,它是根据页面加载时触发的动态操作 on_load
设置的:
DECLARE
CURR_USER VARCHAR2(50);
BEGIN
IF :REQUEST = 'NEW' THEN
:APP_PROJECT_ID := 0;
:APP_PROJECT_READ_ONLY := 'NO';
ELSE
:APP_PROJECT_ID := :P2_ID;
SELECT OWNER INTO CURR_USER
FROM PROJECTS
WHERE ID = :APP_PROJECT_ID;
IF CURR_USER = :APP_USER THEN
:APP_PROJECT_READ_ONLY := 'NO';
ELSE
:APP_PROJECT_READ_ONLY := 'YES';
END IF;
END IF;
EXCEPTION WHEN NO_DATA_FOUND THEN
NULL;
END;
检查会话状态显示:APP_PROJECT_READ_ONLY
的值是正确的,但似乎并不能驱动title
是否只读:
- 如果我将
on_load
的 "page items to return" 留空,那么title
始终是可编辑的。 - 但是,如果我将它设置为
title
,那么title
将始终是只读的,而且它的源代码控制不起作用,它留空(在以前的情况下它工作正常).
我该如何解决?
你的问题是时间顺序。 页面呈现,条件评估,然后您在浏览器页面加载时计算您的应用程序项。
将您的代码移动到计算中,可能在区域之前,因此作为页面呈现的一部分完成。
REQUEST 值只能在页面处理中有机地使用,因此除非您明确设置它,否则可能需要注意。
您还应考虑尽可能使用声明性操作。
www.grassroots-oracle.com/2013/05/performance-of-apex-conditions.html