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中捕捉点击搜索按钮的事件:
- 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();
- }
结果如下

浙公网安备 33010602011771号