一、本节内容
学习树卡档案的开发。
什么是树卡档案?
实际上跟单表档案一样,只是形式有点变化而已。
开发流程:
二、创建元数据
第一步仍然是创建元数据,和单表档案一样,创建组件、创建实体、实现接口。需要注意的一点是,业务属性接口映射时pid的问题:
接下来就和单表档案没区别了,发布元数据、生成源代码、生成建库脚本并执行
三、自动代码生成
怎么生成?
所谓的pk树,实际上就是parentId吧,个人和教程都比较倾向于使用pk树。
继续下一步
接下来重启中间件、分配职责就可以了。
四、代码调整
package nc.ui.train.bd.custclass.ace.handler;
import nc.ui.pubapp.uif2app.event.IAppEventHandler;
import nc.ui.pubapp.uif2app.event.billform.AddEvent;
import nc.vo.bd.cust.custclass.CustClassVO;
import nc.vo.pub.pf.BillStatusEnum;
import nc.vo.pubapp.AppContext;
import nc.ui.pub.beans.UIRefPane;
import nc.ui.pub.bill.BillCardPanel;
import nc.ui.pub.bill.BillItem;
public class AceAddHandler implements IAppEventHandler<AddEvent> {
@Override
public void handleAppEvent(AddEvent e) {
String pk_group = e.getContext().getPk_group();
String pk_org = e.getContext().getPk_org();
BillCardPanel panel = e.getBillForm().getBillCardPanel();
// 设置主组织默认值
panel.setHeadItem("pk_group", pk_group);
panel.setHeadItem("pk_org", pk_org);
/*以下为调整代码,目的是为了新增节点时带出父节点*/
BillItem parentCode = e.getBillForm().getBillCardPanel().getHeadItem("parent_id");
if (e.getBillForm().getModel().getSelectedData() != null) {
CustClassVO vo = (CustClassVO)e.getBillForm().getModel().getSelectedData();
//若上级客户分类设置了参照,并且参照为自身(客户分类),则使用这段代码,并且需要把客户分类本身发布为参照,才能正常使用
//但是想要一个多层级的关系,必须要这样并设置参照,不然只有一级。
((UIRefPane)parentCode.getComponent()).setPK(vo.getPrimaryKey());
//若没有使用参照,使用这段代码
// parentCode.setValue(vo.getPrimaryKey());
} else {
parentCode.setEdit(true);
}
}
}
所谓的参照,也就是在建立元数据的实体属性时的一个参数,如果设置了参照,就需要改变代码,同时还要把节点本身设置为参照。
详细的参照开发下一节介绍。
五、代码结构