2017-06-14 76 views
0

我的主頁中有不同的區域。我想完成的是根據記錄的用戶動態禁用一個或多個區域。APEX ORACLE - 使用PL/SQL + Javascript動態禁用區域

我已經設法以'靜態方式'禁用一個區域。在頁面屬性,JavaScript的菜單下,在Execute when Page Loads我把這個代碼:

$('#R4').addClass('apex_disabled').attr('tabindex', '-1'); 

哪裏R4是區域之一的ID

對於「動態的方式」我創建了一個Process。例如,如果用戶是ADMIN,我想要禁用區域R4。這是代碼(現在我沒有檢查用戶,我只是想獲得工作的禁用功能):

DECLARE 
    user VARCHAR2 (50); 

    BEGIN 

    select username into user 
    from USER 
    where username = V('APP_USER'); 


    htp.p (' <script type = "text/javascript"> '); 
    htp.p (' function disableRegion()'); 
    htp.p (' { '); 
    htp.p (' 
    $(''#R4'').addClass(''apex_disabled'').attr(''tabindex'',''-1''); '); 
    htp.p (' } '); 
    htp.p (' </script> '); 


    END; 

這是行不通的。有什麼建議麼?謝謝!

回答

1

服務器端條件是正常的,您可以有任何形式的聲明性表達式或PL/SQL或SQL查詢等。 頁面呈現後可能無法切換,因爲它們不會呈現首先。

一個客戶端的條件可能是從動態動作射擊頁面加載,這也可以通過授權方案的保護,因此,只有某些動態行爲存在火災。但正如有人建議的那樣,這並不安全。

提供的代碼永遠不會在一個良好的書面申請APEX存在,雖然我懷疑可能是OP是APEX 3.x或那裏瞭解到。

+0

我在Apex 4.2,我在這裏學習。那麼最好的解決方案是改變該地區的授權方案? – Dygne

+1

是的,如果您不想向某些用戶顯示特定的區域/按鈕,那麼授權方案是可行的。我建議你按功能應用方案,而不是業務角色,恕我直言,但這是一個更深入的討論 – Scott

+0

謝謝!還有一個問題:正如我在答案中提到的,我只想禁用特定區域,而不是隱藏它。這仍然可能與認證計劃? – Dygne

0

問題解決了。

的腳本需要推出On Load - After Regions

煤礦被設置爲On Load - Before Header

所以它是不是能夠得到各區域的ID

+2

您也可以更改特定區域的授權方案,例如對於'R4'選擇'Not Admin'(假設你有一個管理員授權方案)。 – RLOG

+0

@RLOG同意,這將是一個更強大的方法恕我直言。目前的方法可以很容易地避開。也許這在OP的環境中不是問題。 – hisnameismyname2