Form中实现动态List

在FORM开发中,经常会使用到下拉列表,Item的List子类,一般情况下直接把下拉列表的值写死在属性中,最近遇到一个需求,下拉列表的值需要在值集中获取,所以需要实现动态填充下拉列表的值。
1.将目标ITEM的子类信息设置为List,不需要添加列表中元素,不需要初始值。
2.新建一个Procedure,代码如下:

 1 procedure basis_list(event in varchar2is  
 2 --游标中定义List中显示的值和数据库值
 3           cursor c_list is
 4     select lookup_code
 5           ,meaning
 6       from fnd_lookup_values_vl
 7      where lookup_type = 'HSS_QT_BASIS';
 8           i                                        number := 0 ;
 9           l_value   varchar2(10);
10           l_meaning varchar2(20);
11   begin
12           if event = 'INIT' then
13                   --赋值前,清空List中现有的值
14                   clear_list('QT_NAME.BASIS');
15 
16                   for r_list in c_list
17                   loop
18                     l_value   := r_list.lookup_code;
19                     l_meaning := r_list.meaning;
20                     i := i + 1;
21 -- add_list_element有4个参数依次为,Item名称,列表中值的序列,显示的值,数据库值
22                     add_list_element('QT_NAME.BASIS',i,l_meaning,l_value);
23                   end loop;
24                   
25           end if;
26 end basis_list;

List中的值定义在Lookup Code中,通过游标获取然后动态填充到List中
在适当的触发器中进行初始化,在WHEN-NEW-FORM-INSTANCE中做的初始化

1 ...
2 
3 QT_NAME.basis_list('INIT');
4 
5 ...

 通过这种方法是否能实现多级联动?

         

            成长

       /      |     \

    学习   总结   分享

QQ交流群:122230156

原文地址:https://www.cnblogs.com/benio/p/1890343.html