在FORM开发过程中,有时下拉列表的值不是固定的,是需要根据一些条件来动态改变的,此时就需要我们来动态设置下拉列表的值:
假设有数据块TEST_BLOCK,下面有一个TEST_ITEM,类型为列表项,子类信息为LIST.
需求是下拉列表的值根据登录系统的人员取得和这个登录人相同部门员工的姓名,只需在程序单元编写如下PROCEDURE,并在WHEN-NEW-FORM-INSTANCT触发器中调用该过程即可。
PACKAGE BODY TEST_PKG IS
PROCEDURE DYN_LIST IS
CURSOR C1 IS
SELECT user_id,user_name FROM person_v
WHERE department_code=(
SELECT department_code FROM person_v
WHERE user_id=fnd_global.user_id);
V_NAME PERSON_V.USER_NAME%TYPE;
V_ID PERSON_V.USER_ID%TYPE;
i number:=1;
BEGIN
CLEAR_LIST(‘TEST_BLOCK.TEST_ITEM');
open C1;
LOOP
FETCH C1 INTO V_ID,V_NAME;
EXIT WHEN C1%NOTFOUND OR C1%NOTFOUND IS NULL;
ADD_LIST_ELEMENT (‘TEST_BLOCK.TEST_ITEM',i,V_NAME,V_ID);
--i对应列表中的第几个项,V_NAME是列表中显示的项,V_ID是项对应的值
i:=i+1;
END LOOP;
DELETE_LIST_ELEMENT ('TEST_BLOCK.TEST_ITEM',i);
CLOSE C1;
END;
END;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28438742/viewspace-769635/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28438742/viewspace-769635/