UDN-企业互联网技术人气社区

板块导航

浏览  : 14238
回复  : 48

[开发平台] LFW中模式化开发的主子表单据保存时,子表数据不能保存

[复制链接]
方竹的头像 楼主
发表于 2015-3-4 12:18:20 | 显示全部楼层 |阅读模式
本帖最后由 方竹 于 2015-3-27 13:10 编辑

在开发LFW的主子表单据,通过模式化向导产生了代码,但是保存时,子表数据不能保存,主表数据可以保存,并且没有提示错误(跟踪发现前台代码没有收集到明细行的数据)。
问题出现的环境:
        使用的uap studio 的版本是6.3NC的版本是NC6.33,我也在uapstudio 6.3.1.2版本中测试,存在同样的问题。
解决办法:
1、模式化非流程主子表单据
         找到保存按钮的方法,修改如下:(注释后的一行)
                              
  
public void onSave(MouseEvent<?> mouseEvent) throws  BusinessException {
  
       Dataset masterDs = this.getMasterDs();
  
       //CmdInvoker.invoke(new UifSaveCmdRV(this.getMasterDsId(),  this.getDetailDsIds(), false));
  
       CmdInvoker.invoke(new UifSaveCmd(this.getMasterDsId(),  this.getDetailDsIds(), LfwExAggVO.class.getName(), false));
  
       masterDs.setEnabled(true);
  
       this.getCurrentAppCtx().closeWinDialog();
  
      
  
       CmdInvoker.invoke(new UifPlugoutCmd(this.getCurrentView().getId(),  PLUGOUT_ID));
  
    }
  


2、模式化流程主子表单据
         打开WfmFlwFormOper类,修改save方法,源码如下:
  
public WfmFormInfoCtx save(WfmFormInfoCtx  frmInfoCtx, WfmFlowInfoCtx flwInfoCtx) {
  
        //当单据PK不存在的时候发挥作用
  
        if  (frmInfoCtx == null) {
  
             return null;
  
        }
  
        try {
  
             IUifCpbService cpbService = NCLocator.getInstance().lookup(IUifCpbService.class);
  
             Datasets2AggVOSerializer d2agg=new  Datasets2AggVOSerializer();
  
             Dataset ds_bxzb=AppUtil.getCntView().getViewModels().getDataset("demo_bxzb");
  
             Dataset ds_bxitem=AppUtil.getCntView().getViewModels().getDataset("demo_bxitem");
  
             BXVO aggvo=(BXVO) d2agg.serialize(ds_bxzb, new  Dataset[]{ds_bxitem}, BXVO.class.getName());
  
             cpbService.insertOrupdateAggVO(aggvo, false);
  
             //cpbService.insertOrUpdateSuperVO((SuperVO)frmInfoCtx,false);
  
             ((SuperVO) frmInfoCtx).setStatus(VOStatus.UPDATED);         
  
        }
  
        catch  (BusinessException e) {
  
             LfwLogger.error(e.getMessage(), e);
  
             throw new  LfwRuntimeException(e.getMessage());
  
        }
  
        
  
        return  frmInfoCtx;
  
    }
  

                                       

相关帖子

发表于 2015-4-3 15:13:39 | 显示全部楼层
本帖最后由 douya 于 2015-4-3 15:16 编辑

楼主的第二个方法的代码保持不变,
模型文件添加提交规则:
QQ图片8.png

已经测试通过。
使用道具 举报

回复

发表于 2015-3-10 11:54:21 | 显示全部楼层
主子表可以保存,数据库有数据,但是刷新一下,子表数据就没了,数据库中还是有的
使用道具 举报

回复

发表于 2015-3-10 11:55:07 | 显示全部楼层
一主俩个字表
使用道具 举报

回复

发表于 2015-3-10 11:55:40 | 显示全部楼层
一主俩个字表
使用道具 举报

回复

方竹的头像 楼主
发表于 2015-3-10 16:30:16 | 显示全部楼层

你的主子表的关联字段有值没?
使用道具 举报

回复

发表于 2015-3-11 16:40:04 | 显示全部楼层
恩,有值,错误就在这
使用道具 举报

回复

发表于 2015-3-26 15:20:55 | 显示全部楼层
楼主:第二个是模式化流程单据吧。我做出来的模式化流程主子单据也是,表体不能保存。用你的代码之后,表体是能保存了,但那时只能保存最后编辑的那一行子表(保存前选中的子表数据)。

QQ图片20150326152348.jpg

QQ图片20150326152357.png


请问这是怎么回事呢?
使用道具 举报

回复

方竹的头像 楼主
发表于 2015-3-30 10:06:31 | 显示全部楼层
@chenw @benbenxiong 两位大神帮忙阿!
代码中 :
Dataset ds_bxitem=AppUtil.getCntView().getViewModels().getDataset("demo_bxitem");
获取的前端返回的 ds中就没有包含子表中其他的已编辑的行数据,只传回了当前选中行!
点评 ( 1 ) 收起 / 展开点评

yangzr 2015年03月30日 15:22

解决了没有?给分享一下,谢谢!

使用道具 举报

回复

发表于 2015-3-30 15:22:06 | 显示全部楼层
douya 发表于 2015-3-26 15:20
楼主:第二个是模式化流程单据吧。我做出来的模式化流程主子单据也是,表体不能保存。用你的代码之后,表体 ...

最后如何解决的,子表多行,如何保存?
使用道具 举报

回复

方竹的头像 楼主
发表于 2015-3-31 10:16:17 | 显示全部楼层
yangzr 发表于 2015-3-30 15:22
最后如何解决的,子表多行,如何保存?

还没解决,前台传递过来的数据就不对了!
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部