在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中捕捉点击搜索按钮的事件:
- public void processFormRequest(OAPageContext pageContext,
- OAWebBean webBean) {
- super.processFormRequest(pageContext, webBean);
- OAApplicationModule am = pageContext.getApplicationModule(webBean);
- if (pageContext.getParameter("Cancel") != null) {
- String[] webBeanNames =
- { "SearchProject", "SearchCustomer", "SearchAreaCode",
- "SearchWindCode", "SearchMachineModel", "SearchProjectPhase",
- "SearchReportStartDate", "SearchReportEndDate",
- "SearchProjectManager", "SearchProjectId", "SearchPartyId" };
- WebBeanUtil.resetWebBean(pageContext, webBean, webBeanNames);
- } else if (pageContext.getParameter("Query") != null) {
- String searchProjectId =
- pageContext.getParameter("SearchProjectId");
- String searchPartyId = pageContext.getParameter("SearchPartyId");
- String searchAreaCode = pageContext.getParameter("SearchAreaCode");
- String searchWindCode = pageContext.getParameter("SearchWindCode");
- String searchMachineModel =
- pageContext.getParameter("SearchMachineModel");
- String searchProjectPhase =
- pageContext.getParameter("SearchProjectPhase");
- Date searchReportStartDate =
- DateUtil.toDate(pageContext, pageContext.getParameter("SearchReportStartDate"));
- Date searchReportEndDate =
- DateUtil.toDate(pageContext, pageContext.getParameter("SearchReportEndDate"));
- String searchProjectManager =
- pageContext.getParameter("SearchProjectManager");
- Serializable[] params =
- { searchProjectId, searchPartyId, searchAreaCode, searchWindCode,
- searchMachineModel, searchProjectPhase, searchReportStartDate,
- searchReportEndDate, searchProjectManager };
- Class[] classes =
- { String.class, String.class, String.class, String.class,
- String.class, String.class, Date.class, Date.class,
- String.class };
- am.invokeMethod("queryStatusReport", params, classes);
- }
- }
搜索逻辑代码:
- public void queryStatusReport(String searchProjectId,
- String searchPartyId,
- String searchAreaCode,
- String searchWindCode,
- String searchMachineModel,
- String searchProjectPhase,
- Date searchReportStartDate,
- Date searchReportEndDate,
- String searchProjectManager)
- {
- StatusReportVOImpl vo = getStatusReportVO1();
- vo.setWhereClause(null);
- vo.setWhereClauseParams(null);
- int bindCount = 0;
- StringBuffer whereClause =new StringBuffer(400);
- whereClause.append(" 1=1");
- Vector params = new Vector(9);
- if (searchProjectId!=null && !("".equals(searchProjectId))){
- whereClause.append(" AND project_id = :");
- whereClause.append(++bindCount);
- params.addElement(searchProjectId);
- }
- if (searchPartyId!=null && !("".equals(searchPartyId))){
- whereClause.append(" AND party_id = :");
- whereClause.append(++bindCount);
- params.addElement(searchPartyId);
- }
- if (searchAreaCode!=null && !("".equals(searchAreaCode))){
- whereClause.append(" AND area_code = :");
- whereClause.append(++bindCount);
- params.addElement(searchAreaCode);
- }
- if (searchWindCode!=null && !("".equals(searchWindCode))){
- whereClause.append(" AND wind_code = :");
- whereClause.append(++bindCount);
- params.addElement(searchWindCode);
- }
- if (searchMachineModel!=null && !("".equals(searchMachineModel))){
- whereClause.append(" AND cux_pa_util_pkg.get_pa_machine_model(project_id,:");
- whereClause.append(++bindCount);
- whereClause.append(") = 'Y'");
- params.addElement(searchMachineModel);
- }
- if (searchProjectPhase!=null && !("".equals(searchProjectPhase))){
- whereClause.append(" AND current_phase_name = :");
- whereClause.append(++bindCount);
- params.addElement(searchProjectPhase);
- }
- if (searchReportStartDate!=null && !("".equals(searchReportStartDate))){
- whereClause.append(" AND report_start_date >= :");
- whereClause.append(++bindCount);
- params.addElement(searchReportStartDate);
- }
- if (searchReportEndDate!=null && !("".equals(searchReportEndDate))){
- whereClause.append(" AND report_start_date <= :");
- whereClause.append(++bindCount);
- params.addElement(searchReportEndDate);
- }
- if (searchProjectManager!=null && !("".equals(searchProjectManager))){
- whereClause.append(" AND project_manager = :");
- whereClause.append(++bindCount);
- params.addElement(searchProjectManager);
- }
- if (bindCount >0){
- vo.setWhereClause(whereClause.toString());
- Object[] bindParams = new Object[bindCount];
- params.copyInto(bindParams);
- vo.setWhereClauseParams(bindParams);
- }
- vo.executeQuery();
- }
结果如下
来源: http://blog.csdn.net/wang_zhou_jian/article/details/5785028