OAF实现客户化查询 .

在OAF中,存在标准的查询面板,但是标准的查询只能实现基础、简单的查询,所以在真正的项目当中,一般情况下都是使用自己开发的客户化查询,开发客户化查询的一般步骤如下:

 

1. 建立页面PG,修改Region

ID

PageLayoutRN

Region Style

PageLayout

AM Definition

RootAM

Window Title

xxx 

Title

xxx

 

2. 在PageLayoutRN下建立Region,属性如下:

ID

MessageComponentLayoutRN

Region Style

MessageComponentLayout

Width

100%

Rows

2

Columns

6

 

3. 在MessageComponentLayoutRN下新建搜索项(lov形式)

 

ID

SearchProject

Item Style

MessageLovInput

External LOV

XXX

Prompt

XXX

这里的External LOV是来源于lov的region。

 

 

4.建立LOV的页面,建立一个listOfValues的region

Region Style

ListOfValues

Scope

Public

AM Definition

LovAM

 

5. 基于vo,建立resultTable,ProjectId项的属性

ID

ProjectId

Item Style

Formvalue

 

6. 在建立的lov组件下建立map映射

ID

ProjectNameMap

LOV Region Item

ProjectName

Return Item

SearchProject

Criteria Item

SerachProject

 

7.下拉框形式组件

ID

SearchProjectPhase

Item Style

MessageChoice

Picklist View Definition

cux.oracle.apps.pa.lov.server.ProjectPhaseVO

Picklist Display Attribute

ProjectStatusName

Picklist Value Attribute

ProjectStatusName

Prmpt

 

 

8. 建立ResultTable

Width

100%

 

9. 在messageComponentLayout Components下添加footer,在region下添加query按钮

ID

Query

Item Style

SubmitButton

Prompt

搜索(&S)

10.继续添加SpaceBean

ID

SpacerBean

Item Style

Spacer

Width

5

11. 继续添加cancel按钮

ID

Cancel

Item Style

SubmitButton

Disable Client Side Validation

True

Prompt

清除(&C)

上面的步骤是建立好一个搜索面板,下面编写搜索逻辑代码。

 

首先在co中捕捉点击搜索按钮的事件:

  1. public void processFormRequest(OAPageContext pageContext,   
  2.                                OAWebBean webBean) {  
  3.     super.processFormRequest(pageContext, webBean);  
  4.     OAApplicationModule am = pageContext.getApplicationModule(webBean);  
  5.     if (pageContext.getParameter("Cancel") != null) {  
  6.         String[] webBeanNames =   
  7.         { "SearchProject", "SearchCustomer", "SearchAreaCode",   
  8.           "SearchWindCode", "SearchMachineModel", "SearchProjectPhase",   
  9.           "SearchReportStartDate", "SearchReportEndDate",   
  10.           "SearchProjectManager", "SearchProjectId", "SearchPartyId" };  
  11.         WebBeanUtil.resetWebBean(pageContext, webBean, webBeanNames);  
  12.     } else if (pageContext.getParameter("Query") != null) {  
  13.         String searchProjectId =   
  14.             pageContext.getParameter("SearchProjectId");  
  15.         String searchPartyId = pageContext.getParameter("SearchPartyId");  
  16.         String searchAreaCode = pageContext.getParameter("SearchAreaCode");  
  17.         String searchWindCode = pageContext.getParameter("SearchWindCode");  
  18.         String searchMachineModel =   
  19.             pageContext.getParameter("SearchMachineModel");  
  20.         String searchProjectPhase =   
  21.             pageContext.getParameter("SearchProjectPhase");  
  22.         Date searchReportStartDate =   
  23.             DateUtil.toDate(pageContext, pageContext.getParameter("SearchReportStartDate"));  
  24.         Date searchReportEndDate =   
  25.             DateUtil.toDate(pageContext, pageContext.getParameter("SearchReportEndDate"));  
  26.         String searchProjectManager =   
  27.             pageContext.getParameter("SearchProjectManager");  
  28.         Serializable[] params =   
  29.         { searchProjectId, searchPartyId, searchAreaCode, searchWindCode,   
  30.           searchMachineModel, searchProjectPhase, searchReportStartDate,   
  31.           searchReportEndDate, searchProjectManager };  
  32.         Class[] classes =   
  33.         { String.class, String.class, String.class, String.class,   
  34.           String.class, String.class, Date.class, Date.class,   
  35.           String.class };  
  36.         am.invokeMethod("queryStatusReport", params, classes);  
  37.     }  
  38. }  

搜索逻辑代码:

  1. public void queryStatusReport(String searchProjectId,  
  2.                               String searchPartyId,  
  3.                               String searchAreaCode,  
  4.                               String searchWindCode,  
  5.                               String searchMachineModel,  
  6.                               String searchProjectPhase,  
  7.                               Date   searchReportStartDate,  
  8.                               Date   searchReportEndDate,  
  9.                               String searchProjectManager)  
  10. {  
  11.     StatusReportVOImpl vo = getStatusReportVO1();  
  12.     vo.setWhereClause(null);  
  13.     vo.setWhereClauseParams(null);  
  14.     int bindCount = 0;          
  15.     StringBuffer whereClause =new StringBuffer(400);  
  16.     whereClause.append(" 1=1");  
  17.     Vector params = new Vector(9);  
  18.       
  19.     if (searchProjectId!=null && !("".equals(searchProjectId))){  
  20.         whereClause.append(" AND project_id = :");  
  21.         whereClause.append(++bindCount);  
  22.         params.addElement(searchProjectId);  
  23.     }  
  24.     if (searchPartyId!=null && !("".equals(searchPartyId))){  
  25.         whereClause.append(" AND party_id = :");  
  26.         whereClause.append(++bindCount);  
  27.         params.addElement(searchPartyId);  
  28.     }  
  29.     if (searchAreaCode!=null && !("".equals(searchAreaCode))){  
  30.         whereClause.append(" AND area_code = :");  
  31.         whereClause.append(++bindCount);  
  32.         params.addElement(searchAreaCode);  
  33.     }  
  34.     if (searchWindCode!=null && !("".equals(searchWindCode))){  
  35.         whereClause.append(" AND wind_code = :");  
  36.         whereClause.append(++bindCount);  
  37.         params.addElement(searchWindCode);  
  38.     }  
  39.     if (searchMachineModel!=null && !("".equals(searchMachineModel))){  
  40.         whereClause.append(" AND cux_pa_util_pkg.get_pa_machine_model(project_id,:");  
  41.         whereClause.append(++bindCount);  
  42.         whereClause.append(") = 'Y'");  
  43.         params.addElement(searchMachineModel);  
  44.     }  
  45.     if (searchProjectPhase!=null && !("".equals(searchProjectPhase))){  
  46.         whereClause.append(" AND current_phase_name = :");  
  47.         whereClause.append(++bindCount);  
  48.         params.addElement(searchProjectPhase);  
  49.     }  
  50.     if (searchReportStartDate!=null && !("".equals(searchReportStartDate))){  
  51.         whereClause.append(" AND report_start_date >= :");  
  52.         whereClause.append(++bindCount);  
  53.         params.addElement(searchReportStartDate);  
  54.     }  
  55.     if (searchReportEndDate!=null && !("".equals(searchReportEndDate))){  
  56.         whereClause.append(" AND report_start_date <= :");  
  57.         whereClause.append(++bindCount);  
  58.         params.addElement(searchReportEndDate);  
  59.     }  
  60.     if (searchProjectManager!=null && !("".equals(searchProjectManager))){  
  61.         whereClause.append(" AND project_manager = :");  
  62.         whereClause.append(++bindCount);  
  63.         params.addElement(searchProjectManager);  
  64.     }  
  65.       
  66.     if (bindCount >0){  
  67.         vo.setWhereClause(whereClause.toString());  
  68.         Object[] bindParams = new Object[bindCount];     
  69.         params.copyInto(bindParams);  
  70.         vo.setWhereClauseParams(bindParams);  
  71.     }  
  72.       
  73.     vo.executeQuery();                               
  74. }  

 

结果如下

来源: http://blog.csdn.net/wang_zhou_jian/article/details/5785028
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值