2012-10-16 49 views
0

我的頁面上有一個複選框項目(注意:這不在報告中),我想在頁面加載時動態檢查複選框。我有一個表格,其中包含所有複選框類型和一個表格,用於標識用戶有權訪問哪些複選框或以更好的方式檢查。Oracle Apex - 動態檢查不在報告中的複選框項目

我的問題是,在Apex複選框項目中,您如何告訴它動態檢查複選框。我在報告中工作,我的查詢如下所示:

SELECT at.name AS TITLE, 
    CASE 
     WHEN at.name IN (SELECT atp.name FROM preferences p) THEN apex_item.checkbox(1,at.value,'CHECKED') 
     ELSE apex_item.checkbox(1,at.value, 'UNCHECKED') 
     END AS CHECKBOX 
FROM access_types at 

我可以在oracle apex複選框項目中執行類似操作嗎?

+0

您可以使用一點點javascript來檢查複選框。 – Annjawn

+0

@Annjawn,javascript將是一個選項,但我需要引用我的首選項表來查看應該檢查哪個複選框。我怎樣才能使用JavaScript? – medium

+0

一個簡單的解決方案可能是隱藏字段並使用首選項表值填充字段。一旦隱藏的字段具有值,javascript可以輕鬆地讀取字段並根據字段的值檢查複選框。 – Annjawn

回答

2

不知道它是exaclty你想要什麼,但如果你只是需要初始化頁面加載一個複選框的項目,您可以:

1 - 使用複選框項的來源屬性和設置以下屬性:

  • 源時Always, replacing any existing value in session state
  • 源類型SQL Query (return single value)SQL Query (return colon separated value)取決於您的複選框項是否包含多個複選框。
  • 源值或表達式:您的查詢返回正確的值。

2 - 使用頭計算之前來計算您的項目:

  • 計算項目:您的複選框項
  • 計算點Before header
  • 運算類型SQL Query (return single value)SQL Query (return colon separated value)取決於您的複選框項目包含或不包含多個複選框。
  • 計算:您的查詢返回正確的值。

:我在報告中使用複選框過,但我注意到,當你有很多行,它比使用簡單的HTML複選框很慢,所以如果你認爲你的報告我建議您從查詢中生成簡單的HTML複選框:

SELECT 
    at.name AS TITLE, 
    CASE WHEN at.name IN (SELECT atp.name FROM preferences p) THEN 
    '<input type="checkbox" value="'||at.value||'" checked="checked" />' 
    ELSE 
    '<input type="checkbox" value="'||at.value||'" />' 
    END AS CHECKBOX 
FROM 
    [...]