af:query中实现关联LOV

 

概述

    在Oracle ADF中可以方便地实现关联下拉列表或LOV,通过前面文章中曾描述过的Row-Level绑定即可,但在af:query中,通过View Object属性中的Dependencies可以方便地实现LOV的关联性,本文主要介绍在af:query中关联LOV的实现。

需求

    HR Schema中的Locations表记录了Region及Country的信息,在此将以Region和Country为例,实现两个LOV,并将这两个LOV进行关联,最后作为Criteria添加到af:query组件中。

实现

1、创建ADF应用

2、基于HR Schema中的Locations表创建Entity Object,View Object,创建Application Module,并将刚创建成功的View Object的实例添加到该Application Module的Data Model中

 

3、为在LocationsView(View Object)中添加LOV,首先需要修改其SQL,添加相应的关联字段,使用专家模式,修改LocationsView(View Object)的SQL为:

SELECT Locations.LOCATION_ID, Locations.STREET_ADDRESS, Locations.POSTAL_CODE, Locations.CITY, Locations.STATE_PROVINCE, Locations.COUNTRY_ID, c.country_name, c.region_id, r.region_name FROM LOCATIONS Locations, regions r, countries c WHERE r.region_id = c.region_id AND c.country_id = Locations.country_id 

4、为Regions与Countries表分别创建Entity Object,View Object,其View Objects分别命名为RegionsView与CountriesView

5、为CountriesView添加Criteria,作为LocationsView中的CountryName属性的LOV查询条件

6、由于CountryName的选择需由RegionId进行限制,在此为RegionId添加绑定变量限制“

7、设置该绑定变量(bv_regionid)的可现实性为false,不将该绑定变量显示在页面中

8、在LocationsView中添加View Accessor,首先添加RegionsView,直接添加到Selected即可,无需进行修改。然后再添加CountriesView,需将前面创建成功的Criteria添加到View Criteria的Selected区域中,进而设置Row-Level绑定,似的上一步骤中创建成功的绑定变量(bv_regionid)关联到LocationsView中的RegionId属性,以完成对于Countries的数据过滤

9、为LocationsView中的RegionName属性添加List of Value(LOV),完成相应的属性设置:

10、同样地,为LocationsView中的CountryName属性添加List of Value(LOV),完成相应属性的设置:

11、设置完成后,就需要设置相关属性之间的依赖关系,由于LocationsView中的RegionId是依赖于RegionName的变化的,首先需要将RegionId的Dependencies属性设置为RegionName

12、与步骤11中类似,在LocationsView中,CountryName的变化是由于RegionName或RegionId的变化引起的,因此设置CountryName的Dependencies属性为RegionName或RegionId,在此设置为RegionName

13、为LocationsView创建Criteria,作为下一步中创建的页面的查询条件,查询条件包括了RegionName与CountryName

14、创建新页面,使用上步创建的Criteria作为af:query的条件,并合理布局结果集Table

15、保存应用,运行该应用

运行结果:

点击RegionName:

选择Americas,此时的CountryName应为Americas下属的Country,且原CountryName被清空:

CountryName被清空,点击CountryName:

验证发现确实已经过滤成功,选择相应选项,进行查询:

本文转自Oracle Seeker:http://oracleseeker.com/2009/11/13/adf_afquery_cascade_lov/

 

你可能感兴趣的:(object,schema,application,query,dependencies,accessor)