在HGrid组件中有如下所示的HeaderVO和LineVO

需要在头上的LOV中触发事件去更新行VO中的值,LOV事件的处理方法见 getLovParameter ,但是由于HGrid的特殊性,不能取到当前事件行,所以建议在VO中新增一个transection的变量,例如LovChangeFlag。

选择LOV的事件后设置该值为Y

public void setAccountItemId(Number value)
{
setAttributeInternal(ACCOUNTITEMID, value);
setLovChangeFlag("Y");
}

PFR 中LOV事件处理

else if (pageContext.isLovEvent()) {

else if ("AccountItemCode".equalsIgnoreCase(lovInputSourceId)) {
OAHGridBean hGridBean =
(OAHGridBean)webBean.findChildRecursive("AccountHgrid");
OAHGridQueriedRowEnumerator hgridEnum =
new OAHGridQueriedRowEnumerator(pageContext, hGridBean); am.drAccountChangeFin(hgridEnum);
} }

am中事件处理

  public void drAccountChangeFin(OAHGridQueriedRowEnumerator hgridEnum)
{ while (hgridEnum.hasMoreElements())
{
Row rowToUpdate = (Row)hgridEnum.nextElement();
if (rowToUpdate != null)
{
String lovChangeFlag =
(String)rowToUpdate.getAttribute("LovChangeFlag");
if ("Y".equals(lovChangeFlag)) //得到触发LOV事件的行
{
rowToUpdate.setAttribute("LovChangeFlag", "N"); //得到后再将此值设为N
Number headerId=
(Number)rowToUpdate.getAttribute("HeaderId");
//业务代码
//...
while (hgridEnum.hasMoreElements())
{
rowToUpdate = (Row)hgridEnum.nextElement();
Number currentHeaderId =
(Number)rowToUpdate.getAttribute("HeaderId");
//此处判断遍历得到的row是否是LINEVO中的数据
if (headerId.equals(currentHeaderId))
{
rowToUpdate.setAttribute("XXX", value );
}
}
}
}
}
}

OAHGridQueriedRowEnumerator会将HGrid中所有的数据放入枚举中,并且会将HeaderVO中的所有数据放在前面,将LineVO中的所有数据放在后面,所以不用担心在遍历的时候会先遍历到LineVO中的数据。

OAF中 遍历HGrid组件中的所有VO行的更多相关文章

  1. VC中遍历目标进程中的模块

    VC中遍历目标进程中的模块 MFC代码win32 也可以用 在下面代码进行修改转换就可以了CString strModule; 可以换成 char* 但是MODULEENTRY32结构中的szModu ...

  2. Element中Tree树结构组件中实现Ctrl和Shift多选

    在Element中的树结构中, 实现多选功能,首先的是判断有没有按下键盘ctrl和shift按键.但是在Element中的tree组件的左键点击事件是没有提供$event鼠标属性判断的.所以就需要在函 ...

  3. JS中遍历EL表达式中后台传过来的Java集合

    前言:在我的项目里有这么一个情况,后台直接model.addAttribute()存储了一个对象,此对象内部有一个集合,前端JSP处理的方法正常情况下就是直接使用EL表达式即可.但是如果在JS中需要使 ...

  4. 【微信小程序】--小程序中循环遍历(包括js中遍历和wxml中的遍历)

    文章为博主原创,纯属个人见解,如有错误欢迎指出. 如需转载,请注明出处. 在js中遍历 for (var index in res.data.infos) { res.data.infos[index ...

  5. 在PHP中遍历数据库表中的数据

    数据库中的数据: //1.分别将每一行的每一列遍历出来 //mysql_fetch_row()函数在每一次遍历后会将指针向后自动移动一个单位 while($row=mysql_fetch_row($r ...

  6. Mybatis 中遍历map 参数中的 list 和 array 属性

    原文:https://blog.csdn.net/liudongdong0909/article/details/51048835 问题在项目有中遇到批量删除操作时,需要根据两个属性去删除数据,其中一 ...

  7. vue父组件中获取子组件中的数据

    <FormItem label="上传头像" prop="image"> <uploadImg :width="150" ...

  8. react:在一个组件中调用别的组件中的方法

    先介绍一下要解决的问题:react中一个组件A和一个组件B,其中B是被connect(connect是redux中的方法)包装过的组件,包装成BContainer,A和BContainer的关系是兄弟 ...

  9. js中遍历删除数组中的项(项目中遇到的问题解决)

    代码如下: for (var key=0;key<$scope.pageContent.messages.length;key++){ if($scope.pageContent.message ...

随机推荐

  1. Static Cell-静态TableView

    使用静态TableView有两个前提,1.要在Storyboard上  2.需要使用TableViewController PS:如果需要设置不同的cell的高度不同的话,还是需要使用tableVie ...

  2. 解析plist文件(字典里包着数组,数组中又包含字典)

    #import "RootTableViewController.h" #import "City.h" @interface RootTableViewCon ...

  3. iOS开发基础框架

    ---恢复内容开始--- //appdelegate ////  AppDelegate.m//  iOS开发架构////  Copyright © 2016年 Chason. All rights ...

  4. 【文章内容来自《Android 应用程序开发权威指南》(第四版)】如何设计兼容的用户界面的一些建议(有删改)

    最近一直在看的一本书是<Android 应用程序开发权威指南>(第四版),十分推荐.书中讲到了一些用户界面设计的规范,对于初学者我认为十分有必要,在这里码给大家,希望对我们都有用. 在我们 ...

  5. android 进程间通信---Service Manager(2)

    关于servicemanager的设计: 还是这张结构图,由于ProcessState & IPCThreadState是与binder deriver交互的, 所以对于client端来说Bp ...

  6. 在VS项目中通过GIT生成版本号作为编译版本号

    上一篇博客写了如何在 .Net 项目使用 SVN 作为版本控制工具时生成与代码对应的组件版本号.虽然在公司一直使用 SVN ,但我却对 GIT 情有独钟(可能要归功于那段捣鼓 ROM 的时光),但少有 ...

  7. mac环境下手动卸载mysql

    1.sudo rm /usr/local/mysql 2.sudo rm -rf /usr/local/mysql* 3.sudo rm -rf /Library/StartupItems/MySQL ...

  8. jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用

    一.jQuery Form的其他api  1.  formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...

  9. C标准头文件<assert.h>

    <assert.h>定义了两个用来调试程序的宏: assert和NDEBUG,assert用来判断表达式是否为真,如果为真继续执行,如果为假,向stderr输出一条错误消息,并调用< ...

  10. Debian

    一.简介 https://zh.wikipedia.org/wiki/Debian 二.下载 https://www.debian.org/ 三.配置 1)挂载iso镜像 mount /dev/cdr ...