OAF_开发系列01_实现OAF资料主从关系Master-Detail联动(案例)

简介: 2014-06-02 Created By BaoXinjian 一、摘要 OAF和Form Builder一样,也需要主从块的管理,应为Form只需要建立一个relationship,相对简单 在OAF中实现主从Master-Detail联动的实现,更多的是通过代码去实现 比如在主块...

2014-06-02 Created By BaoXinjian

一、摘要


OAF和Form Builder一样,也需要主从块的管理,应为Form只需要建立一个relationship,相对简单

在OAF中实现主从Master-Detail联动的实现,更多的是通过代码去实现

比如在主块中添加一个event,在CO中去触发从块的查询语句,从而实现联动

个人觉得其核心思想就是,在Master Section中换行时,触发一个Event,在CO中一旦获取这个Event后,调用AM中的方法对Detail Section的VO进行查询初始化

 

二、案例


需求:当主块supplier选择后,系统自动关联子块Site,显示这个supplier下的所有sites

1. 建立Header Region -> Supplier Table

2. 建立Detail Region -> Supplier Sites Table

3. 在Header中建立Singel Section, 设定Action Type为FireAction, Event为SupplierSelect

4. 新增CO,在ProcessFormRequest中抓取Event SupplierSelect,调用AM的方法

5. 在AM中获取Supplier_Id, 将Supplier_Id赋值与VO中的具体SQL

6. VO中执行SQL

7. 查看结果

    (1). 查询Supplier Header,选中第一条Record

    (2). 选中第一条后,在Detail中显示所有Site Records

 

三、案例实现


Step1. 建立Structure

    

 

Step2. 新增CO,在ProcessFormRequest中抓取Event SupplierSelect,调用AM的方法

复制代码
 1 public void processFormRequest(OAPageContext pageContext, OAWebBean webBean) {  
 2  3 super.processFormRequest(pageContext, webBean);  4  5 OAApplicationModule am = (OAApplicationModule)pageContext.getApplicationModule(webBean);  6  7 String event = pageContext.getParameter("event");  8  9 if ("supplierSelect".equals(event)){ 10 11 am.invokeMethod("handleSupplierSelectionEvent"); 12 13  } 14 15 } 
复制代码

 

Step3. 在AM中获取Supplier_Id, 将Supplier_Id赋值与VO中的具体SQL

复制代码
 1 public void handleSupplierSelectionEvent(){
 2  3 OADBTransaction txn = getOADBTransaction();  4  5 String detailTableText = null;  6  7 String supplierId = null;  8  9 OAViewObject vo = (OAViewObject)findViewObject("SupplierVO1"); 10 11 Row masterRow = vo.getFirstFilteredRow ("SelectFlag", "Y"); 12 13 if (masterRow != null){ 14 15  vo.setCurrentRow(masterRow); 16 17 supplierId = String.valueOf(masterRow.getAttribute("SupplierId")); 18 19 MessageToken[] tokens = { new MessageToken("SUPPLIER_NAME", null)}; 20 21 detailTableText = txn.getMessage("AK", "FWK_TBX_SITES_FOR_SUPPLIER", tokens); 22 23  } 24 25 else{ 26 27 detailTableText = txn.getMessage("AK", "FWK_TBX_SUPPLIER_SITES", null); 28 29  } 30 31 SupplierSitesVOImpl voSites = this.getSupplierSitesVO1(); 32 33 if (voSites == null){ 34 35 MessageToken[] errTokens = { new MessageToken("OBJECT_NAME","SupplierSitesVO1")}; 36 37 throw new OAException("AK", "FWK_TBX_OBJECT_NOT_FOUND", errTokens); 38 39  } 40 41  voSites.initQuery(supplierId); 42 43 }
复制代码

 

Step4. VO中执行SQL

复制代码
 1 public void initQuery (String SupplierId) {
 2  3 if (SupplierId != null){  4  5 setWhereClause("SUPPLIER_ID = :1");  6  7 setWhereClauseParams(null); // Always reset  8  9 setWhereClauseParam(0, SupplierId); 10 11  executeQuery(); 12 13  } 14 15 }
复制代码

 

四、案例测试


Test. 查看结果

Test1. 查询Supplier Header,选中第一条Record
    

Test2. 选中第一条后,在Detail中显示所有Site Records

    

 

Thanks and Regards

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
7月前
|
Web App开发 JSON 前端开发
SAP UI5 应用开发教程之九十七 - 如何使用客户端 JSON 模型构建一个 Master-Detail-Detail 布局中的明细页面试读版
SAP UI5 应用开发教程之九十七 - 如何使用客户端 JSON 模型构建一个 Master-Detail-Detail 布局中的明细页面试读版
150 0
|
7月前
|
容器
SAP UI5 应用的主-从-从(Master-Detail-Detail)布局模式的实现步骤
SAP UI5 应用的主-从-从(Master-Detail-Detail)布局模式的实现步骤
43 0
|
7月前
|
Web App开发 JSON 前端开发
SAP UI5 应用开发教程之九十一 - 如何使用客户端 JSON 模型构建一个 Master-Detail-Detail 布局中的列表页面试读版
SAP UI5 应用开发教程之九十一 - 如何使用客户端 JSON 模型构建一个 Master-Detail-Detail 布局中的列表页面试读版
41 0
|
7月前
|
Web App开发 前端开发 JavaScript
SAP UI5 应用开发教程之一百零五 - SAP UI5 Master-Detail 布局模式的联动效果实现明细介绍
SAP UI5 应用开发教程之一百零五 - SAP UI5 Master-Detail 布局模式的联动效果实现明细介绍
47 0
关于 SAP 电商云 Spartacus UI 修改 div 层级结果是否算是 breaking change 的问题
关于 SAP 电商云 Spartacus UI 修改 div 层级结果是否算是 breaking change 的问题
125 0
关于 SAP 电商云 Spartacus UI 修改 div 层级结果是否算是 breaking change 的问题
一种简单地实现 SAP UI5 Master detail 页面的方法
一种简单地实现 SAP UI5 Master detail 页面的方法
一种简单地实现 SAP UI5 Master detail 页面的方法
SAP 电商云 Spartacus UI added-to-cart 的端到端测试源代码解析
SAP 电商云 Spartacus UI added-to-cart 的端到端测试源代码解析
SAP 电商云 Spartacus UI added-to-cart 的端到端测试源代码解析
|
测试技术
OAF_开发系列24_实现OAF更新记录显示Record History(案例)
20150716 Created By BaoXinjian 一、摘要 OAF页面控件中显示记录历史信息有如下的限制: 1. 首先当然是后台的表结构中必须包含WHO字段列了 2. 基于的视图对象必须是非PL/SQL的可更新VO 3.
1023 0
|
Oracle 关系型数据库
OAF_开发系列20_实现OAF打印功能
ddddd   添加一个页面级的button区域:pagebuttonBar,在之下添加button item ,这里主要设置的参数有:采用默认的oaf的打印按钮的id名称: IcxPrintablePageButton,设置属性集为:/oracle/apps/fnd/attributesets...
1134 0