admin管理员组

文章数量:1122850

nc

参照类型

  1. 列表型参照
  2. 树型参照
  3. 树表型参照

建立参照类

参照基类:
对应于三种常用类型的参照,Model提供了三个抽象类:

  1. 列表参照: AbstractRefModel
  2. 树型参照: AbstractRefTreeModel
  3. 树表型参照: AbstractRefGridTreeModel

不同类型的参照对应的参照类须继承上述的相应基类

参照类代码示例:

  1. 列表参照:参考nc.ui.train.pub.ref.DemoTypeRefModel
package nc.ui.demo.db.pub.ref;import nc.ui.bd.ref.AbstractRefModel;public class DemoTypeRefModel extends AbstractRefModel {public DemoTypeRefModel() {super();}@Overridepublic String[] getFieldCode() {//表数据的字段编码return new String[]{"code","name"};}@Overridepublic String[] getFieldName() {//表数据的字段名称return new String[]{"运输方式编码","运输方式名称"};}@Overridepublic String[] getHiddenFieldCode() {//表数据需要隐藏的字段编码return new String[]{"pk_sendtype"};}@Overridepublic String getTableName() {//表数据的表名return "demo_demotype";}@Overridepublic String getPkFieldCode() {//表数据的主键字段return "pk_sendtype";}@Overridepublic String getRefCodeField() {//表数据的参照编码字段return "code";}@Overridepublic String getRefNameField() {//表数据的参照名称字段return "name";}@Overridepublic String getWherePart() {//表数据的过滤条件
//		return super.getWherePart();String wherePart = super.getWherePart();if(null == wherePart || "".equals(wherePart.trim())){wherePart = " isnull(dr,0) = 0 ";}else{wherePart += " and isnull(dr,0) = 0 ";}return wherePart;}
}
  1. 树形参照:参考nc.ui.train.pub.ref.CustClassRefModel
package nc.ui.demo.db.pub.ref;import nc.ui.bd.ref.AbstractRefTreeModel;public class CustClassRefModel extends AbstractRefTreeModel {public CustClassRefModel() {super();}@Overridepublic int getClassDefaultFieldCount() {return super.getClassDefaultFieldCount();}@Overridepublic String[] getFieldCode() {//参照数据的字段编码return new String[]{"code","name"};}@Overridepublic String[] getFieldName() {//参照数据的字段名称return new String[]{"客户编码","客户名称"};}@Overridepublic String[] getHiddenFieldCode() {//需要隐藏的参照数据的字段编码//lxiaofan//需要把涉及到但不用的字段放入,不仅是getFieldCode中的字段//例如此处还应该将getFatherField方法中的字段和getChildField方法中的字段放入return new String[]{"pk_custclass", "parent_id"};}@Overridepublic String getTableName() {//参照数据的表名return "train_Entity3";}@Overridepublic String getPkFieldCode() {//参照数据对应表的主键return "pk_custclass";}@Overridepublic String getFatherField() {//树结构的父主键字段return "parent_id";}@Overridepublic String getChildField() {//树结构的子主键字段return "pk_custclass";}@Overridepublic String getRefCodeField() {//参照对应的编码字段return "code";}@Overridepublic String getRefNameField() {//参照对应的名称字段return "name";}@Overridepublic String getWherePart() {//参照数据的过滤条件
//		return super.getWherePart();String wherePart = super.getWherePart();if(null == wherePart || "".equals(wherePart.trim())){wherePart = " dr = 0 ";}else{wherePart += " and dr = 0 ";}return wherePart;}}
  1. 树表型参照:参考nc.ui.train.pub.ref.CustRefModel
package nc.ui.demo.db.pub.ref;import nc.ui.bd.ref.AbstractRefGridTreeModel;public class CustRefModel extends AbstractRefGridTreeModel {public CustRefModel() {super();}@Overridepublic int getClassDefaultFieldCount() {return super.getClassDefaultFieldCount();}@Overridepublic String[] getClassFieldCode() {//树结构的字段编码return new String[]{"code","name","parent_id","pk_custclass"};}@Overridepublic String getClassTableName() {//树结构的表名return "train_Entity3";}@Overridepublic String getClassFatherField() {//树结构的父主键字段return "parent_id";}@Overridepublic String getClassChildField() {//树结构的子主键字段return "pk_custclass";}@Overridepublic String getClassWherePart() {//树结构的过滤条件
//		return super.getClassWherePart();String wherePart = super.getClassWherePart();if(null == wherePart || "".equals(wherePart.trim())){wherePart = " isnull(dr,0) = 0 ";}else{wherePart += " and isnull(dr,0) = 0 ";}return wherePart;}@Overridepublic String getClassJoinField() {//树结构:树和表关联的字段return "pk_custclass";}@Overridepublic String getDocJoinField() {//表数据:树和表关联的字段return "pk_supclass";}@Overridepublic String[] getFieldCode() {//表数据的字段编码return new String[]{"code","name"};}@Overridepublic String[] getFieldName() {//表数据的字段名称return new String[]{"客户编码","客户名称"};}@Overridepublic String[] getHiddenFieldCode() {//表数据需要隐藏的字段编码return new String[]{"pk_cust","pk_supclass"};}@Overridepublic String getTableName() {//表数据的表名return "train_Entity6";}@Overridepublic String getPkFieldCode() {//表数据的主键字段return "pk_cust";}@Overridepublic String getRefCodeField() {//表数据的参照编码字段return "code";}@Overridepublic String getRefNameField() {//表数据的参照名称字段return "name";}@Overridepublic String getWherePart() {//表数据的过滤条件
//		return super.getWherePart();String wherePart = super.getWherePart();if(null == wherePart || "".equals(wherePart.trim())){wherePart = " isnull(dr,0) = 0 ";}else{wherePart += " and isnull(dr,0) = 0 ";}return wherePart;}}

注意:
树表型参照需要区分配置树结构和表数据的构造属性,要理清树结构与表结构的关联关系

注册参照类

必须在bd_refinfo表中注册参照类,在元数据操作界面中设置参照,注册参照类示例sql脚本如下:
insert into BD_REFINFO (CODE, DR, ISNEEDPARA, ISSPECIALREF, METADATATYPENAME, MODULENAME, NAME, PARA1, PARA2, PARA3, PK_REFINFO, REFCLASS, REFSYSTEM, REFTYPE, RESERV1, RESERV2, RESERV3, RESID, RESIDPATH, TS, WHEREPART)
values ('XXXXX', 0, null, null, null, 'uap', 'YYYYY', null, null, null, '0001Z0100000001TRAIN', 'nc.ui.train.pub.ref.XXXRefModel', null, 1, null, null, null, ‘YYYYY', 'ref', '2013-10-05 22:57:13', null);
※NAME字段需全局唯一,不可重复
※PK_REFINFO字段需长度为20,且全局唯一
※REFTYPE字段是参照类型:0 列表参照 1 树型参照 2 树表参照

设置参照

设置参照:

  • 一个实体可以设置多个参照,但必须设置一个缺省参照
  • 获取参照属性时,不设置则取属性对应实体的缺省参照


参照档案

点击【类型】属性的图标按钮
在弹出对话框界面,选择需要的实体参照
【参照名称】下拉列表中选择正确的参照类型

本文标签: nc