最近有个需求,就是采购订单的供应商要按照一级和二级来选,一级关联二级,二级关联供应商。之前的一级和二级都是用LovInput做的,现在想要改为messageChoice。如下图:

改为:

下面给大家介绍下我是如何实现的:

1.页面修改:

把Cate1的属性改为messageChoice,如下图配置:

为Cate1设置事件:

参数:

把Cate2的属性也改为messageChoice,如下图配置:

设一个无参数的事件,用来刷新用:

2.在页面关联的AM中,加入如下两个方法:

 public void msgChoice(String zReqLineId)
{
ZReqLinesVOImpl linesVO = this.getZReqLinesVO();
int rowCount = linesVO.getRowCount();
for (int i = 0; i < rowCount; i ++)
{
ZReqLinesVORowImpl linesRow = (ZReqLinesVORowImpl)linesVO.getRowAtRangeIndex(i);
//循环遍历各行
Number primaryKey = linesRow.getZreqLineId();//获取行id
if (primaryKey.intValue() == Integer.parseInt(zReqLineId))
{
String cate1 = (String)linesRow.getCate1();
System.out.println("cate1:" + cate1);
msgChange(cate1);
}
} } public void msgChange(String cate1)
{
ViewObject vo = this.getCuxPOCategory2LovVO1();
String whareString="1=1";
whareString = whareString + " and DETL_PID = '" + cate1 + "'";
vo.setWhereClause(null);//置空VO中的where条件
vo.setWhereClauseParams(null); //置空VO中的where条件
vo.setWhereClause(whareString);//赋值拼接的where条件
vo.executeQuery(); //执行查询
}

3.在页面的CO加入如下代码,通过事件调用AM中的方法:

 if("select1".equals(pageContext.getParameter("event")))
{
String Cate1LineId = pageContext.getParameter("Cate1LineId");//获取fireAction的参数
System.out.println("Cate1LineId:" + Cate1LineId);
Serializable []params = { Cate1LineId };
am.invokeMethod("msgChoice", params);//调用AM方法
}

出现的bug:

本例不适合多行的情况,当出现多行时,会导致二级的messageChoice的各行结果总是按照最后选择的一级关联,(如图)原因是每一行都公用一个VO导致的。如果某位大神看到此文,有解决此bug的方法,请写在评论中,谢谢了。

OAF messageChoice 关联问题的更多相关文章

  1. OAF_开发系列12_实现OAF开发中URL中的标记和加密参数传递(案例)

    20150712 Created By BaoXinjian

  2. OAF_开发系列01_实现OAF资料主从关系Master-Detail联动(案例)

    2014-06-02 Created By BaoXinjian

  3. OAF_文件系列3_实现OAF多行表中附件功能AttachmentImage(案例)

    20150727 Created By BaoXinjian

  4. OAF TABLE中添加序号列

    在实际的OAF页面TABLE的使用中,会有很多时候需要在前台页面中显示序号,虽然在sql中可以使用rownum来获得序号,但是rounum的优先级比order by 高,所以在语句中order by ...

  5. EBS OAF中如何在多行表中实现附件功能

    EBS OAF中如何在多行表中实现附件功能 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 在OAF中使用附件功能之前,要先明白Entity( ...

  6. EBS OAF 开发中的OAMessageRadioGroup控件

    EBS OAF 开发中的OAMessageRadioGroup控件 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 简单介绍 RadioGro ...

  7. OAF开发中一些LOV相关技巧 (转)

    原文地址:OAF开发中一些LOV相关技巧 在OAF开发中,LOV的使用频率是很高的,它由两部分构成一是页面上的LOV输入框(如OAMESSageLovInputBean),二是弹出的LOV模式窗口(O ...

  8. Oracle OAF 应用构建基础之实现控制器 (转)

    原文地址: Oracle OAF 应用构建基础之实现控制器 设计一个OA Controller 如OA Framework Page解析中所描述的,OA Controller定义了web beans的 ...

  9. EBS OAF 发展 URL商标、加密和编码

    EBS OAF 发展 URL商标.加密和编码 (版权声明.我原来的或翻译的文章,如需转载,转载的个人学习,转载请注明出处:否则,请与我联系.版权所有) 马克 当您指定页面定义声明URL参数,文本也能够 ...

随机推荐

  1. Node.js连接Mysql,并把连接集成进Express中间件中

    引言 在node.js连接mysql的过程,我们通常有两种连接方法,普通连接和连接池. 这两种方法较为常见,当我们使用express框架时还会选择使用中间express-myconnection,可以 ...

  2. JS的解析与执行过程

    JS的解析与执行过程 全局中的解析和执行过程 预处理:创建一个词法环境(LexicalEnvironment,在后面简写为LE),扫描JS中的用声明的方式声明的函数,用var定义的变量并将它们加到预处 ...

  3. 模拟实现SQL Server中的datepart(week,date)的功能

    本文目录列表: 1.为什么要模拟实现datepart(week,date)的功能 2.具体实现思路 3.T-SQL代码实现逻辑 4.总结语 5.参考清单列表   1.为什么要模拟实现datepart( ...

  4. 1.什么是Code First(EF Code First 系列)

    EF4.1中开始支持Code First .这种方式在领域设计模式中非常有用.使用Code First模式,你可以专注于领域设计,根据需要,为你一个领域的对象创建类集合,而不是首先来设计数据库,然后来 ...

  5. json是个啥东东

    xml 不用说 只要是搞web开发的 没听说谁不知道的 一种类似数据传输格式定义的语言 但是他却不是一个真正的轻量级的东西 其他的不说 只要传输一点很少的数据 经过他那左括号右括号 还有什么属性 一包 ...

  6. openfire 初始密码

    openfire 初始密码 mssql2014 进入数据库,找到 ofUser 表 ,将密码字段对应的密文替换为下面的内容,则密码就是 admin ecbd03623cd819c48718db1b27 ...

  7. Web 分页

    以Car表为例分页 页面以table展示数据分页 页面代码 <asp:Repeater ID="Repeater1" runat="server"> ...

  8. [Excel] Worksheet.PasteSpecial

    PasteSpecial(Format, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, NoHTMLFormatting) 1. F ...

  9. PHP运行环境,服务器相关配置

    1.在DOS命令窗口输入 mysql -hlocalhost -uroot -p回车 进入mysql数据库, 其中-h表示服务器名,localhost表示本地:-u为数据库用户名,root是mysql ...

  10. ftp 根据特定正则匹配文件名 下载到本地 并且上传文件到ftp java *** 最爱那水货

    /** * 建立FTP链接,FTP服务器地址.端口.登陆用户信息都在配置里配置即可. * @throws IOException */ public boolean connectFtp(String ...