首頁>Club>
5
回覆列表
  • 1 # juanjuan

    在APEX中,這樣的單選框可以透過apex_item包中的checkbox函式來實現。

    函式原型如下:

    APEX_ITEM.CHECKBOX(

    p_idx IN NUMBER,

    p_value IN VARCHAR2 DEFAULT NULL,

    p_attributes IN VARCHAR2 DEFAULT NULL,

    p_checked_values IN VARCHAR2 DEFAULT NULL,

    p_checked_values_delimitor IN VARCHAR2 DEFAULT :,

    p_item_id IN VARCHAR2 DEFAULT NULL,

    p_item_label IN VARCHAR2 DEFAULT NULL)

    RETURN VARCHAR2;

    在apex中,單選框選中後的值會儲存到一個內部集合之中,這個集合可能是個聯合陣列,具體實現不太清楚,但是這些集合最多隻能有50個,也就是說,不同種類的單選框只能有50種。

    p_idx引數就是指明到底是用第幾個內部集合,如果你要建立一個大型的應用,其中很多頁面要用到單選框,這樣你就得找個地方記一下哪個集合對應於哪個頁面或是場合,否則若是不同的場合用到了同一個集合,極有可能會導致資料出問題。

    p_value 用來指示該儲存什麼資料,在具體應用時,這個一般是某個主鍵列。

    p_attributes可以是Checked和Unchecked兩種,用來指示單選框的初始選擇狀態。

    p_checked_values與p_checked_values_delimitor結合,用來指定初始狀態下那些單選框被預設選擇或不選。p_value值如果在p_checked_values中出現,則單選框呈現p_attributes所指定的狀態,例如如果p_value此時是10, p_checked_values是10:20,p_attributes是checked,那麼因為p_value現在在p_checked_values之中,則此單選框呈現p_attributes所指定的勾選狀態,而p_checked_values_delimitor則是用來分隔p_checked_values中各個值的分隔符,這裡是個冒號。

    p_item_id和p_item_label用來指定此單選框在html程式碼裡面的id屬性,應該在使用javascript時會有不小的用途。

    那麼我們該如何得到單選框所選擇的值呢,apex提供了apex_application包,在此包裡,我們可以得到如下的集合變數APEX_APPLICATION.G_F01,這裡G_F01就儲存了被勾選的所有單選框的值,G_F是字首,而01則是p_idx所指定的值,當然因為最多隻能有50個不同的集合,所有隻能有G_F01到G_F50可用。

    以下程式碼摘自http://www.apex-

    blog.com/oracle-apex/adding-a-checkbox-to-your-report-apex_item-tutorial-30.html

    展示瞭如何挨個讀取每個集合元素的值,然後進行dml操作,非常直觀簡單。

    BEGIN

    FOR i in

    1..APEX_APPLICATION.G_F01.COUNT

    LOOP

    UPDATE emp

    SET ticked = Y

    WHERE empno = APEX_APPLICATION.G_F01(i);

    END LOOP;

    COMMIT;

    END;

    以下例子示範瞭如何讓部門號是10的員工行被勾選:

    SELECT APEX_ITEM.CHECKBOX(1,empno,DECODE(deptno,10,CHECKED,NULL)) Select,

    ename, job

    FROM emp

    ORDER BY 1

    以下例子示範瞭如何讓部門號是10與20的員工行被勾選:

    SELECT APEX_ITEM.CHECKBOX(1,deptno,NULL,10:20,:) Select,

    ename, job

    FROM emp

    ORDER BY 1

  • 中秋節和大豐收的關聯?
  • OA的檔案管理是什麼樣的?