您的位置:首页 > 其它

使用Input Text with LOV 实现LOV

2014-08-20 21:00 288 查看
开发环境:JDevloper 11.1.2.1.0+ Oracle Database 10g Express Edition 10.2.0.1。

使用ADF BC建立模型层时,可以在VO上为某个字段设置LOV。

比如,员工VO中的JobId字段来自于工作VO,这样在界面上会自动生成下拉列表。

在本实验中,我使用Input Text with List of Values来实现LOV。

重点步骤说明:

1. 创建ADF BC from tables

(1)选择Employees 和Jobs,生成ADF BC。

(2)为Employees VO 增加View Accessors:Job VO。

2. 为EmployeesView的JobId字段定义LOV

(1)设置LOV的数据源和返回值

从设置界面可以看出,返回值可以有多个。





(2)选择List Type:Input Text with List of Values;选择显示全部的字段:JobId,JobTitle,MaxSalary,MinSalary。





3. 创建页面

(1)拖放EmployeesView1 Data Control到页面上

发现JobId字段自动选择了List of Values Input组件:





4. 运行效果

(1)点击JobId旁边的“放大镜”按钮,弹出查询窗口,默认不显示任何记录。





(2)点击搜索按钮,显示出所有符合条件的记录。





(3)如果勾上“Query List Automatically”,弹出查询窗口时,会显示出所有符合条件的记录。





(4)如果选择“No Search",弹出查询窗口时,将没有查询条件,比较适合记录比较少的List。





(5)同时选择(3)和(4),运行效果如下:





(6)如果设置inputListOfValues属性editMode="select",输入框变成只读模式,不能输入,只能从下拉列表选择。





(7)如果设置inputListOfValues属性readOnly="true",输入框变成只读模式,下拉列表也没有了。





(8)如果设置inputListOfValues属性autoSubmit="true",则输入时,按下Tab键,会自动执行查询。

当输入AD_,按下Tab键,会弹出所有以 AD_开头的JobId选项,如下图:





当输入AD_V,按下Tab键,会直接补全为AD_VP,不会弹出查询窗口,因为只有一个值满足条件。

(9)在(8)的基础上,我们希望随着用户的输入,会自动下拉显示匹配的结果。

可以为inputListOfValues组件增加autoSuggestBehavior操作:<af:autoSuggestBehavior suggestedItems="#{bindings.JobId.suggestedItems}"/>。

经过测试,中文也支持自动匹配。





5. 重新新建一个页面,把LOV字段重新绑定Select One Choice组件

使用Input Text with LOV方式实现的LOV,页面上显示和保存的都是JobId,不太符合一般设计要求。

一个折中的办法是把LOV字段重新绑定到Select One Choice组件上。

这样下拉列表中显示的是JobTitle,实际保存的是JobId。

实现方式如下:

(1)拖放EmployeesView中的JobId到页面,选择Single Selection,选择ADF Select One Choice。

(2)Base Data Source选择EmployeesView1,选择Dynamic List,List Data Source选择JobsView1(如果没有,就创建一个)。

(3)返回值选择JobId,显示值选择JobTitle。





当然,这只是一个折中的办法,如何使用Input Text with LOV实现显示名称而保存ID,请见下一篇文章。

Project 下载:ADF_LOV_InputText.7z

参考文献:

1. http://docs.oracle.com/cd/E16162_01/web.1112/e16181/af_lov.htm
2. http://blogs.oracle.com/adf/entry/getting_selected_value_from_selectonechoice
3. http://husaindalal.blogspot.com/2010/03/lov-displaying-name-and-storing-value.html
4. https://blogs.oracle.com/adf/entry/combo_lov_how_to_display
5. http://cn.geekool.net/2011/11/14/how-to-restrict-the-list-of-values-retrieved-by-a-model-driven-lov/ http://maping930883.blogspot.com/2012/08/adf182input-text-with-lov-lov.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: