在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(); }
结果如下

1549

被折叠的 条评论
为什么被折叠?



