2012年6月14日星期四

ADF_138:Tree组件使用指南之八:使用Self-Referencing VO创建Tree

运行环境:JDeveloper 11.1.2.2.0 + Oracle Database 10g Express Edition 10.2.0.1。

前面的实验中都是使用了两个VO来创建Tree的,其中,每个VO代表Tree的一层节点,两个VO之间是一对多的关系。
以此类推,你可以使用多个VO建立多层Tree,那么如果是一个VO,其中有指向自己的一对多的关系,该如何创建Tree呢?

我以Employees表为例,该表中有EmployeeId和ManagerId,ManagerId和EmployeeId之间是一对多的关系。
即一个Manager可以有多个Employee。

重点步骤说明:

1. 创建Model Project,只选择Employees表。
这一步没有什么特别,因为ADF-BC根据表的主外键帮助我们建立了ManagerId和EmployeeId之间是一对多的关系。
需要做改动的地方如下:
(1)创建一个Criteria,用于选出树的根节点。
这里我们简单指定EmployeeId=100的人是根节点。

(2)为了让关系一目了然,重新命名VO实例的名称;同时新建一个VO实例:EditEmployeesView,用于实现修改功能。
注意,这里不能使用AllEmployeesView同时实现显示和修改功能,必须新建一个VO实例。

(3)选中AllEmployeesView,点击Edit,把TopEmployeesViewCriteria选中,这一步尤其容易忘。


2. 创建页面
(1)拖放AllEmployeesView到页面生成Tree,增加指向自己的VO。

(2)拖放EditEmployeesView到页面生成Form。
(3)设置Target Data Source,指向EditEmployeesViewIterator。


3. 运行



Project 下载:ADF_Tree_SingleVO.7z

参考文献:
1. http://www.oracle.com/technetwork/developer-tools/adf/learnmore/32-tree-table-from-single-vo-169174.pdf
2. http://www.oracle.com/technetwork/developer-tools/adf/learnmore/sept2011-otn-harvest-508189.pdf

没有评论: