OAF中 遍历HGrid组件中的所有VO行
在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行的更多相关文章
- VC中遍历目标进程中的模块
VC中遍历目标进程中的模块 MFC代码win32 也可以用 在下面代码进行修改转换就可以了CString strModule; 可以换成 char* 但是MODULEENTRY32结构中的szModu ...
- Element中Tree树结构组件中实现Ctrl和Shift多选
在Element中的树结构中, 实现多选功能,首先的是判断有没有按下键盘ctrl和shift按键.但是在Element中的tree组件的左键点击事件是没有提供$event鼠标属性判断的.所以就需要在函 ...
- JS中遍历EL表达式中后台传过来的Java集合
前言:在我的项目里有这么一个情况,后台直接model.addAttribute()存储了一个对象,此对象内部有一个集合,前端JSP处理的方法正常情况下就是直接使用EL表达式即可.但是如果在JS中需要使 ...
- 【微信小程序】--小程序中循环遍历(包括js中遍历和wxml中的遍历)
文章为博主原创,纯属个人见解,如有错误欢迎指出. 如需转载,请注明出处. 在js中遍历 for (var index in res.data.infos) { res.data.infos[index ...
- 在PHP中遍历数据库表中的数据
数据库中的数据: //1.分别将每一行的每一列遍历出来 //mysql_fetch_row()函数在每一次遍历后会将指针向后自动移动一个单位 while($row=mysql_fetch_row($r ...
- Mybatis 中遍历map 参数中的 list 和 array 属性
原文:https://blog.csdn.net/liudongdong0909/article/details/51048835 问题在项目有中遇到批量删除操作时,需要根据两个属性去删除数据,其中一 ...
- vue父组件中获取子组件中的数据
<FormItem label="上传头像" prop="image"> <uploadImg :width="150" ...
- react:在一个组件中调用别的组件中的方法
先介绍一下要解决的问题:react中一个组件A和一个组件B,其中B是被connect(connect是redux中的方法)包装过的组件,包装成BContainer,A和BContainer的关系是兄弟 ...
- js中遍历删除数组中的项(项目中遇到的问题解决)
代码如下: for (var key=0;key<$scope.pageContent.messages.length;key++){ if($scope.pageContent.message ...
随机推荐
- 往UISegmentedControl上添加几个控制器
#import "RootViewController.h" #import "LoginViewController.h" #import "Reg ...
- iOS开发笔记5:多线程之NSThread、NSOperation及GCD
这篇主要总结下iOS开发中多线程的使用,多线程开发一般使用NSThread.NSOperation及GCD三种方式,常用GCD及NSOperation. 1.NSThread 创建线程主要有以下三种方 ...
- 调用iframe中父页面/子页面中的JavaScript方法
今天做公司的内部流程系统,发现一问题.怎么调用iframe外面的方法呢?于是百度了一下,呵呵,把搜索结果摘抄下来. 转自:http://hi.baidu.com/zh_m_zhou/blog/item ...
- tp_link路由器 重新设置
当打不开网站,而提示让我们登录电信猫时,通常是由于突然断电导致的路由器程序错误.重新路由器设置即可. 1.路由器恢复出厂设置 2.用网线分别连接电脑和路由器的LAN口.(也就是将 ...
- javascript 的字符串原生方法
join([分隔符])数组元素组合为字符串 toString()以字符串表示数组 reverse()数组反转--改变原数组本身 valueOf()返回数组值 <html> <head ...
- C++ 构造函数中调用虚函数
我们知道:C++中的多态使得可以根据对象的真实类型(动态类型)调用不同的虚函数.这种调用都是对象已经构建完成的情况.那如果在构造函数中调用虚函数,会怎么样呢? 有这么一段代码: class A { p ...
- Android程序入口以及项目文件夹的含义和使用总结—入门
新接触一门程序或者开发框架,我一般都要先弄清楚程序的入口在哪里,程序怎么运行的:建立一个项目后,各个文件夹有什么作用以及如何使用等等.理清楚这些东西对以后开发是很有好处的,古话说得好,工欲善其事,必先 ...
- ERP产品价格成本计算的几个方法(转)
一般财务计算产品价格又很多方法,我这里做了几个供参考,实体属性主要是编号.数量.价格等,这里就不列出了. /// <summary> /// 先进先出算法 /// </s ...
- 用shell脚本写一个for循环
一.输出十遍北京 for((i=1;i<10;i++))> do> echo '北京';> done 二.死循环 for((;;))do#java -jar producer. ...
- 烂泥:KVM虚拟机的关机与开启
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 我们在开启与关闭KVM虚拟机时,一般是通过start.shutdown.reboot等命令来进行.但是有时候我们会发现在使用shutdown.reboo ...