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为:

 

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/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值