自定义参照开发规范

自定义参照可以定义参照的UI界面,也可以只定义参照的Model

 

1. 参照界面的定义:

 

参照分为表型、树型、树表型参照三种。继承了UIDialog并实现了IRefUINew接口。

 

 

 

程序员可自定义参照界面,最好也继承UIDialog,须实现IrefUINew接口。

 

 

 

2. 参照Model的定义

 

对应与3种类型的参照,Model也有3个抽象类:

 

表型: AbstrarctRefModel

 

树型   AbstractRefTreeModel

 

树表型 AbstractRefGridTreeModel

 

 

 

要自定义不同类型参照Model ,请继承相关的抽象类。并设置如下属性:

 

 

 

2.1表型参照

 

黑体为必设项

 

i.              .如果需要distinct短语,或其他断语:

 

       setStrPatch("distinct");

 

如果需要公司主键(一定在setWherePart前执行,对于默认参照在设置pk_corp后,还须重新设定setWherePart):

 

setPk_corp(公司主键)    ;

 

setWherePort(……);

 

设置参照名(弹出窗口标题),可以和RefNodeName不同:

 

setRefTitle(参照名)

 

ii.              设置select子句:1

 

//可显示字段

 

       setFieldCode(new String[] { "bd_psndoc.psncode", "bd_psndoc.psnname","bd_deptdoc.deptname" });

 

       //不可显示字段――如主键

 

setHiddenFieldCode(new String[]{"pk_corp"}); 

 

iii.                    中文名称――表头和栏目用

 

      setFieldName(new String[](“人员代码”,”姓名”,”部门名称”));

 

iv.              设置from子句:

 

setTableName("bd_psndoc left outer join bd_deptdoc on bd_psndoc.pk_deptdoc=bd_deptdoc.pk_deptdoc ");

 

v.              设置where子句:

 

       setWherePart(" bd_psndoc.pk_corp='" + getPk_corp() + "'");

 

      注:需要根据不同的公司返回查询,参数中用getPk_corp()方法。   

 

在原setWherPart的基础上追加where子句:

 

addWherePart();

 

注:每次都从原where中追加,不允许连续追加where子句。

 

vi.              设置group子句:(默认为空)

 

setGroupPart("");

 

vii.              设置order子句:(默认为第一列)

 

setOrderPart("");

 

viii.              前几列在表中显示:(默认前2列)

 

       setDefaultFieldCount(2);

 

ix.              设定主键字段:主键字段必须在setHiddenFieldCode或setFieldCode已设定

 

setPkFieldCode("bd_psndoc.pk_psndoc");

 

x.              设定界面输入字段:(默认为第一列)

 

setBlurField(字段名);

 

xi.              设定参照代码字段:(默认为第一列)

 

setRefCodeField(字段名);

 

xii.              设定参照名称字段:(默认为第二列)

 

setRefNameField(字段名);

 

xiii.              设置助记码字段名:

 

setMnecode(字段名数组)

 

xiv.              设置组织类型和组织主键,对于主体账簿类型的档案适用如(会计科目)

 

setPk_GlOrgBook(组织类型, 组织)

 

 

 

2.2树型参照设置

 

(同表型参照的设置,表型参照的必输部分一定要输入。树形设置group子句无效)

 

指定编码规则(如果为空,则按上下级关系构造树必须指定父字段,子字段):

 

setCodingRule("222222");

 

指定父字段名:

 

setFatherField(字段名)

 

必输一项,否则没有分级规则。

 

指定子字段名:

 

setChildField(字段名)

 

指定根名(默认和参照名相同):

 

setRootName(根名);

 

 

 

2.3树表型参照

 

黑体为必设项

 

设置树数据

 

 

i.              setClassFieldCode(字段名数组);
 
ii.              setClassFieldName(表名)
 
iii.              setClassWherePart(where子句)
 
iv.              SetOrderPart(Order子句)
 
v.              SetClassJoinField(要和表关联的字段名)
 
vi.              SetClassDefaultFieldCount(数值)(树节点显示字段默认为2)
 
vii.              指定定编码规则:如果为空,按上下级关系
 
setCodingRule("222222");
 
viii.              指定父字段名
 
setFatherField(字段名)
 
ix.              指定子字段名
 
setChildField(字段名)

10.指定根名

 

setRootName(根名);

 

 

 

设置表数据

 

(同表型参照的设置,表型参照的必输部分一定要输入。下面只列出不同的属性)

 

i.              设定和树节点数据关联的字段

 

              setDocJoinField(字段名)

 

ii.              设置精确匹配:默认精确匹配(树上选择一个节点后,查询表数据是否为精确匹配。)

 

       setExactOn(boolean)

 

iii.              设定读表的树节点最小级次:默认1(末级节点一定会读表数据,其他情况要大于等于该值是才读数据)

 

       setExpandLevel(int)

 

 

 

 

 

 

 

如果你已经定义好了UI和Model部分,恭喜你,自定义参照已基本定义完成。

 

 

 

使用时在进行如下设置即可:

 

UIRefPane  ref = new UIRefPane();

 

Ref.setRefUI(自定义界面,一般不需定义用系统默认的);

 

Ref.setRefModel(自定义参照模型)

 

 

 

3. 覆盖参照抽象Model中的方法的注意事项

 

 

 

nc.ui.bd.ref.AbstractRefModel.getData()

 

       参照默认是按照设定好的Sql语句到后台查询数据,如果想自定义取数,可以覆盖getData() 方法。返回自定义数据即可。但要注意,参照的数据默认情况下是有内存级缓存的,缓存的key为AbstractRefModel.getRefSql()的值,如果该值为null,那参照系统将不会缓存数据。如果要使用参照内存缓存,getRefSql()要有非null的值。