使用ADF-BC 实现查询功能之六:使用Popup组件实现全字段查询

187 篇文章 2 订阅
开发环境:JDevloper 11.1.2.1.0+ Oracle Database 10g Express Edition 10.2.0.1。

在《 使用ADF-BC 实现查询功能之一:All Queriable Attributes 》中,全字段查询界面和结果是在同一个页面。
实际使用中,有些客户希望把查询界面放到popup组件中,查询完毕后,页面刷新显示查询结果。
这里我们可以使用一些小技巧,不需要很大的改动就可以实现该功能。
重要步骤说明:

1. 创建页面,添加查询按钮,点击后弹出popup组件

2. 创建popup组件
(1)在其中添加dialog组件,其中Type=none,表明不需要任何OK或Cancel按钮。
(2)在dialog组件中,拖放All Queriable Attributes生成全字段查询Panel,其内容如下:
<af:query id="qryId1" headerText="Search" disclosed="true"
          value="#{bindings.ImplicitViewCriteriaQuery.queryDescriptor}"
          model="#{bindings.ImplicitViewCriteriaQuery.queryModel}"
          queryListener="#{bindings.ImplicitViewCriteriaQuery.processQuery}"
          queryOperationListener="#{bindings.ImplicitViewCriteriaQuery.processQueryOperation}"
          resultComponentId="::resId1"/>

稍后我们会做些改动。

3. 创建一个Managed Bean
(1)把table组件绑定到Managed Bean中的一个属性,这样可以在代码中操作table组件。
(2)把popup组件绑定到Managed Bean中的一个属性,这样可以在代码中操作table组件。
(3)修改queryListener,将其指向Managed Bean中的一个方法: queryListener="#{myBackingBean.queryListener}"。
queryListener方法内容如下:
public void queryListener(QueryEvent queryEvent) {
    // 首先通过程序调用原有的queryListener
    JSFUtils.invokeMethodExpression("#{bindings.ImplicitViewCriteriaQuery.processQuery}", Object.class,
                                        QueryEvent.class, queryEvent);
    // 隐藏popup组件
    searchPopup.hide();
    // 刷新table组件
    AdfFacesContext.getCurrentInstance().addPartialTarget(resultTable);
}


4. 运行页面
点击Search按钮,弹出popup窗口,输入条件,回车确定。

Table将显示符合查询条件的记录。


5. 小结
使用JSFUtils.invokeMethodExpression可以在代码中调用原来绑定在组件上的Listener事件。
这是一种定制组件Listener事件的方式:在调用原有Listener方法的前后加入自己的逻辑。

Project 下载:ADF_QueryInPopup.7z

http://maping930883.blogspot.com/2010/04/adf066adf-bc-popup.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值