壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3005|回复: 1

[OAF] (转帖)OAF开发中VL和AdvancedTable相结合的方法和注意点

[复制链接]
发表于 2008/1/3 22:56:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
VL不能不说是一个非常好的东西,它与advancedTable的结合使得我们的代码工作量有了很大的缩减。举个例子,我们在正式的应用中,很多情况下存在着两张表之间的父子关系,我们这里给父表起名header,给子表起名为line,使用向导为基于这两张表的VO创建好VL,在页面上,我们既要显示header的内容,又要显示line的内容,如果没有VL那么你必须手动的去取页面上的header_id,然后根据header_id做为查询条件分别对header表和line表进行查询得到相对应的header与其下的line的值,但是有了VL的话,这个操作就可以大大的简化,我们直接在AM中实例化VL,在页面做查询的时候,直接加入advancedTable控件,注意,advancedtable这里是基于line创建的,这里可能大家有点疑惑,我们没有在AM实例化line,那么这里怎么创建基于line的advancedTable呢?这里就显示出了VL的一个小的作用,它可以直接将和header关联的line引入到AM中,大家可以注意到,当我们在AM中加入了VL后,在AM中会多出一个getlineVO1的方法,也就是说,AM在实例化VL的时候,会自动的实例化好header相对应的line,我们这里就可以创建了。更神奇的东西就要出现了!这里要根据header表中的条件进行查询,以期查询到对应的header下的line的信息,我们这里只用依据页面上用户输入的header的查询条件进行header的查询,对应的在advancedTable中我们就会看到对应header的所有line的信息,神奇吗?我们不用对line做任何的查询,我们便可以得到对应的line的信息。
这里要注意的是:
1                     在页面的显示的时候,如果页面中的header中的信息如果不首先显示的话,那么之下的line的内容也是不会显示的。就是说,在页面上,必须先显示header中的内容,这样对应的line的内容才能正常显示。
2                     在录入数据的过程中,如果headerVO对应的行的信息没有被录入的话,也就是没有必要输入header的数据,header相关的信息都是在初始化的时候进行的,那么在页面上用户就不必输入任何header的属性值,那么在提交该页面后,将会导致的结果是header的表中没有输入数据,但是line中的表中却被写入了数据。原因是这样的,headerVO当前行的状态在初始话以后一直是STATUS_INITIALIZED,从而导致headerVO当前行的实体属性没有被添加到当前的transaction中,所以,当transacton的commit方法被触发的时候,headerVO对应的当前行的信息是不会被写入到数据库表里去的,因此遇到不需要在header表中录入数据的时候,要手动的改变headerVO中的属性值,以此来改变headerVO当前行的状态,从而将组成当前headerVO行的实体属性添加到transaction中,从而才能将headerVO当前行的信息正常写入对应的数据库表里。这里有两种方法来改变当前VO行的状态,一种是通过手动的给当前headerVO行中的随意一列属性通过getCurrentRow().setAttribute(“AttributeName”,value);来通过给属性赋值来改变VO的状态,另外一种就是直接通过Row中的方法来改变当前行的状态,row.setNewRowState(Row.STATUS_NEW);(推荐使用后一种方法!)


转自:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1827868
发表于 2010/10/19 10:36:04 | 显示全部楼层
能发个例子看下嘛?谢谢。harveyTao@126.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 01:35 , Processed in 0.014313 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表