STUDIO生成主子孙单据开发说明(4)

2019-06-11 16:03

String pk_c_b = mgscb[i].getPk_c_b(); for(int j = 0 ; j < tbs.size() ; j++){ }

((MgsClassbVO[])

MgsTeacherbVO tbvo = tbs.get(j); if(tbvo.getPk_c_b().equals(pk_c_b)){ }

lbvos.add(tbvo); tbs.remove(tbvo);

aggVOs[k].getChildren(MgsClassbVO.class))[i].setPk_t_b(lbvos.toArray(new MgsTeacherbVO[0]));

}

} }

return aggVOs;

在这里面需要先查询出主子VO,再遍历子VO找到其主键,将其加到一个StringBuffer数组当中,再这些根据条件查询出孙的VO,最后在组装一次主子孙全VO,这样只是对数据库执行查询操作3次,而且条件也比较精确,而上一种方法需要遍历整个主子aggVO,没遍历一次就执行一次查询,这样对数据库就会产生频繁的操作,影响性能(没有很大的数据量测试过,只是根据需要对数据库的相互次数得到的结论,不完全保证正确)。

选中的代码就是根据子VO再去查出孙VO,并且组合出一个完整的主子孙VO的代码。

2. 新增保存动作:

和上面一样,使用代理类,调新增,后台代码如下:

这里的新增需要用到GCInsertBPTemplate 类来进行主子孙的保存. nc.util.mmf.framework.gc.GCBillTransferTool这是一个主子孙单据单据简化工具.在保存前,打断点看看孙表数据是否传到后台,如下图:

前台代码需要新增:

在保存按钮里面,注入主子孙管理的model,再保存方法里面再调用如图红线标注的方法

保存数据以后,界面依然是卡片界面,如果此时不做特殊处理,那么返回到列表界面的时候,当前选中的数据就是增加前选中的数据,所以我们需要在返回按钮当中做特殊的处理。重写返回按钮,强制发一个事件即可。

nc.ui.xgh_study.maingrand.action.UEReturnActionEx

同样修改,删除和新增类似这里不一一说明。

3. 第一次打开界面问题

主子孙界面第一次在打开界面时,可能孙表模板被隐藏,第二次打开才能显示,这里的解决办法是: 列表界面: 重写这个类,

nc.ui.pubapp.uif2app.components.grand.ListGrandPanelComposite

将readListCacheInfo()方法重写

卡片界面类似

如果孙表的数据不能显示,在数据初始化的时候代码如下:

4. 卡片界面保存问题 需要重写这个类

nc.ui.pubapp.uif2app.components.grand.CardGrandPanelComposite

在初始化界面的时候调用如下方法:

/**

* 重写下初始化方法 平台代码没有考虑多页签的问题 需要给每个子页签都添加上伪列 *

* @param mainBillForm

* void TODO(参数说明) */

private void constructPreColumBillItem(BillForm mainBillForm) { String[] bodyTableCodes =

mainBillForm.getBillCardPanel().getBillData() .getBodyTableCodes();

for (int i = 0; i < bodyTableCodes.length; i++) { BillModel billModel =

mainBillForm.getBillCardPanel().getBillModel( bodyTableCodes[i]);

if (billModel.getBodyColByKey(\) > 0) continue; // 添加伪列操作

BillItem[] bodyItems = billModel.getBodyItems(); BillItem newItem = new BillItem(); BillItem[] newItems = Arrays

.copyOf(bodyItems, bodyItems.length + 1); newItem.setKey(\); newItem.setShow(false);

newItem.setNull(false);

newItem.setShowOrder(bodyItems.length + 1); newItems[bodyItems.length] = newItem; billModel.setBodyItems(newItems);

mainBillForm.getBillCardPanel().getBodyPanel(bodyTableCodes[i]) .setTableModel(billModel); } }

在保存按钮的doAction方法中需要修改为如下代码,这样自己手动增加伪列,否则在保存的时候就会显示错误数据。

5. 在主子孙单据中,由于是将一个主子表和一个孙表糅合在一起,所以在操作列表界面或者是卡片界面时都是通过

nc.ui.pubapp.uif2app.components.grand.ListGrandPanelComposite 需要重写的方法:

private void tabChangeProcess() {

// 获得当前选中行

int currentRow = ((BillListView)

.getBodyTable().getSelectedRow();

.getBillListPanel().getChildListPanel().getTableCode();

this.mainPanel).getBillListPanel()

String currentbodyTabCode = ((BillListView) this.getMainPanel()) // 根据当前子页签获取孙表view


STUDIO生成主子孙单据开发说明(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:非煤试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: