转自:http://www.cnblogs.com/benio/archive/2010/11/28/1890343.html
在FORM开发中,经常会使用到下拉列表,Item的List子类,一般情况下直接把下拉列表的值写死在属性中,最近遇到一个需求,下拉列表的值需要在值集中获取,所以需要实现动态填充下拉列表的值。
1.将目标ITEM的子类信息设置为List,不需要添加列表中元素,不需要初始值。
2.新建一个Procedure,代码如下:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 procedure basis_list(event in varchar2) is
--游标中定义List中显示的值和数据库值
cursor c_list is
select lookup_code
,meaning
from fnd_lookup_values_vl
where lookup_type = 'HSS_QT_BASIS';
i number := 0 ;
l_value varchar2(10);
l_meaning varchar2(20);
begin
if event = 'INIT' then
--赋值前,清空List中现有的值
clear_list('QT_NAME.BASIS');
for r_list in c_list
loop
l_value := r_list.lookup_code;
l_meaning := r_list.meaning;
i := i + 1;
-- add_list_element有4个参数依次为,Item名称,列表中值的序列,显示的值,数据库值
add_list_element('QT_NAME.BASIS',i,l_meaning,l_value);
end loop;
end if;
end basis_list;
List中的值定义在Lookup Code中,通过游标获取然后动态填充到List中
在适当的触发器中进行初始化,在WHEN-NEW-FORM-INSTANCE中做的初始化
1 ...
2
3 QT_NAME.basis_list('INIT');
4
5 ...