在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
BEGIN
FOR i in
1..APEX_APPLICATION.G_F01.COUNT
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,
在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
LOOPUPDATE 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