OAF中 遍历HGrid组件中的所有VO行
2016-10-25 18:42
155 查看
在HGrid组件中有如下所示的HeaderVO和LineVO
需要在头上的LOV中触发事件去更新行VO中的值,LOV事件的处理方法见 getLovParameter ,但是由于HGrid的特殊性,不能取到当前事件行,所以建议在VO中新增一个transection的变量,例如LovChangeFlag。
选择LOV的事件后设置该值为Y
PFR 中LOV事件处理
am中事件处理
OAHGridQueriedRowEnumerator会将HGrid中所有的数据放入枚举中,并且会将HeaderVO中的所有数据放在前面,将LineVO中的所有数据放在后面,所以不用担心在遍历的时候会先遍历到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中的数据。
相关文章推荐
- NGUI查找子节点下的所有组件并且循环遍历销毁
- C++ builder 遍历所有组件的 caption 属性,轻松实现界面多语言支持
- 遍历Panel组件上的所有控件:
- C++ builder 遍历所有组件的 caption 属性,轻松实现界面多语言支持
- JavaScript递归遍历输出json所有字段与值的方法
- VB.net遍历路径下的所有文件及所有子文件夹---递归算法
- 如何遍历某个数据库中所有有记录的表?
- 测试 java Map 所有遍历方法的效率
- .net下遍历内容页所有控件实现重置功能
- Android_遍历SD卡所有文件
- JS前台遍历所有文本框,验证是否为空
- VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject)
- map遍历拿到所有值的4种方法
- 递归遍历某一路径下的所有文件(for windows or linux)
- c#遍历一个文件夹下的所有文件包括子文件夹
- JS遍历控件取值,去某行的所有控件的值
- 使用Shell遍历目录及其子目录中的所有文件方法
- VS2010 实现文件夹浏览、遍历所有文件
- 使用JS遍历Table表格中所有单元格内容
- unity深度查找某个子物体和遍历所有子物体方法