首页 > 代码库 > OAF messageChoice 关联问题
OAF messageChoice 关联问题
最近有个需求,就是采购订单的供应商要按照一级和二级来选,一级关联二级,二级关联供应商。之前的一级和二级都是用LovInput做的,现在想要改为messageChoice。如下图:
改为:
下面给大家介绍下我是如何实现的:
1.页面修改:
把Cate1的属性改为messageChoice,如下图配置:
为Cate1设置事件:
参数:
把Cate2的属性也改为messageChoice,如下图配置:
设一个无参数的事件,用来刷新用:
2.在页面关联的AM中,加入如下两个方法:
1 public void msgChoice(String zReqLineId) 2 { 3 ZReqLinesVOImpl linesVO = this.getZReqLinesVO(); 4 int rowCount = linesVO.getRowCount(); 5 for (int i = 0; i < rowCount; i ++) 6 { 7 ZReqLinesVORowImpl linesRow = (ZReqLinesVORowImpl)linesVO.getRowAtRangeIndex(i); 8 //循环遍历各行 9 Number primaryKey = linesRow.getZreqLineId();//获取行id10 if (primaryKey.intValue() == Integer.parseInt(zReqLineId))11 {12 String cate1 = (String)linesRow.getCate1();13 System.out.println("cate1:" + cate1);14 msgChange(cate1);15 }16 }17 18 }19 20 public void msgChange(String cate1)21 {22 ViewObject vo = this.getCuxPOCategory2LovVO1();23 String whareString="1=1";24 whareString = whareString + " and DETL_PID = ‘" + cate1 + "‘";25 vo.setWhereClause(null);//置空VO中的where条件26 vo.setWhereClauseParams(null); //置空VO中的where条件27 vo.setWhereClause(whareString);//赋值拼接的where条件28 vo.executeQuery(); //执行查询29 }
3.在页面的CO加入如下代码,通过事件调用AM中的方法:
1 if("select1".equals(pageContext.getParameter("event")))2 {3 String Cate1LineId = pageContext.getParameter("Cate1LineId");//获取fireAction的参数4 System.out.println("Cate1LineId:" + Cate1LineId);5 Serializable []params = { Cate1LineId };6 am.invokeMethod("msgChoice", params);//调用AM方法7 }
出现的bug:
本例不适合多行的情况,当出现多行时,会导致二级的messageChoice的各行结果总是按照最后选择的一级关联,(如图)原因是每一行都公用一个VO导致的。如果某位大神看到此文,有解决此bug的方法,请写在评论中,谢谢了。
OAF messageChoice 关联问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。