- 浏览: 349211 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
贝塔ZQ:
java实现操作word的读取和修改操作,用插件实现的话,可以 ...
java用poi实现对word读取和修改操作 -
yh412:
[flash=200,200][url][img]引用[/im ...
java用poi实现对word读取和修改操作 -
2047699523:
最代码 http://www.zuidaima.com 提供 ...
Java经典代码 -
漫成咖啡:
如何制作卡片型单据 -
geekant:
import com.swing.lx.table 这个包是你 ...
JTable的表头合并
卡片型单据UI工厂中最基本的单据,与其他类型的单据比较起来,它的界面形式以及VO数据的组织相对简单。
卡片型单据的应用场景是:单据聚合VO的数据在界面上展示这个聚合VO,可以有标准的表头+表体数据组成,也可以是单表体和单表头。
卡片型单据统一的界面基类 BillCardUI
统一的事件处理类 CardEventHandler
统一的界面控制接口 ICardController
单表体的卡片型单据界面
表头+表体的卡片型单据界面
多子表的卡片型单据界面
开发卡片型单据的步骤:
与传统的单据开发方式一样,基于UAP平台,需要做一下准备:
#以数据库表结构为蓝本,利用工具自动生成单据VO类
#在NC二次开发工具/单据类型管理中对单据的相关配置套类进行注册。比如单据UI类,前台校验类等。
#在NC单据模板设置工具中对该单据的显示模板进行设置。
从卡片单据的相关基类继承,即可生产初步的类框架。由于UI工厂在基类对许多功能进行了缺省实现,因此只需要配置几个简单的信息(通过方法的重载)即可生产最简单的界面。
1. 界面控制类是必须的。因此它保存着单据的VO信息,以及单据的主子表主键信息
重载getBillType() 方法 -- 返回在平台里给此单据注册的单据类型
重载getBillVOName() 方法 -- 返回单据的VO信息
重载getPKField() 方法 -- 返回主表的主键
重载getChildPKField() 方法 -- 返回子表的主键。
2. EventHandler 类用来响应按钮事件,所有按钮事件在基类都有缺省实现!
3. SampleCardUI
重载createController() 方法 -- 该方法得到界面控制类
通过这几步,实际已经利用UI工厂创建了最简单的单据。
完善功能一:数据加载
# 初始化单据模板的数据,比如对comboBox数据的初始化,对参照数据的初始化。实现这个功能,需重载initSelfData 方法,并在方法内完成对单据模板初始化的代码。
# 初始化界面数据,UI工厂通过setDefaultData方法来设置界面的初始数据。该方法的主要目的是初始化单据必须的信息,它在新增数据的时候会被调用。但是,在UI类实例化的时候,它不会自动调用。因此,应该在UI类的构造器显式地调用该方法。
# 读取单据的数据。从外部数据源获取单据数据,比如数据库、数据文件等。最普遍的情况是通过查询数据库获得单据。
第一,在平台上定制单据的查询模板,并进行注册。
第二,根据业务确定单据是基本档案的单据还是需要流程平台、会计平台等平台支持的单据。这个信息需要在单据类中指明,在SampleCardController 中重载getBusinessActionType 方法。
第三,为单据定制按钮。很显然,我们现在必须要一个查询按钮,为了浏览的方法,在添加一个按钮和一个刷新按钮。方法是:在SampleCardController中重载 getCardButtonAry 方法。
经过上面几步,就完成了简单的数据加载功能。按钮的事件处理,及数据库查询的逻辑都已在基类实现,因此,只需做简单的信息配置(主表主键,子表主键,是否走平台,主表VO类,子表VO类,聚合VO类)即可。
完善功能二: 对数据的增,删,改操作
我们并没有显示地控制查询的逻辑,仅仅是见主子表信息,单据类型配置在程序中,如果对数据的增删改并没有特殊的功能要求,我们只需要添加相应的操作按钮,此时应该修改SampleCardController的 getCardButtonAry 方法。
上一步之后,单据已经具备了对数据的增,删,改功能。需要提醒的是,按钮状态的管理在UI工厂中是交给ButtonManager对象集中控制。
完善功能三: 前后台校验
在UI工厂中,单据的前台校验也是先在单据类型管理中注册前台校验类,但是提供了校验的辅助类和对校验规则的封装。而单据的后台校验,在UI工厂有特殊的实现方法。
前台校验主要处理对界面数据的校验。UI工厂定义了一个抽象类BeforeActionCHK,它实现了平台的前台校验接口IUIBeforeProcAction 。这样,单据的前台校验类应继承BeforeActionCHK。为了辅助做校验,UI工厂利用校验规则和校验执行类完成功能。通用的校验执行类是VOChecker ,校验规则分为三种:
1. 由接口ICheckRules 所定义的
它主要用来做最基本的校验,比如表头,表体数据的非空校验,数据类型校验等等。
2. 由接口ICheckRules2所定义的
它主要用来做表体数据是否为空的校验,并且增加了设定特殊的校验执行类的接口。
3. 由接口IUniqueRules所定义的
它用来校验前台表体数据的唯一性。
变体一:单表体的卡片型单据
单表体的单据时指装载界面数据的聚合VO表头VO为空,只存在一组表体VO。UI工厂在设计的时候考虑到这种情况,设计了一个接口ISingleController,单表体单据的界面控制类应实现此接口,并实现isSingleDetail方法。
变体二:单表头的卡片型单据
变体三:虚拟主子表的卡片型单据
虚拟主子表单据指的是那种数据来源于一张数据表,却根据特定规则模拟主子表的结构,将一部分字段放到表头,剩下的字段放到表体的单据。它通常用于数据的分组,即把数据根据特定字段的值进行分组。特定字段的值相等的数据自然的被归为一类,然后,把特定字段放到表头显示,属于它的一组数据在表体列表显示,形成了标准主子表的结构。
因为数据分组的特定规则取决于业务,因此UI工厂无法做缺省的实现。但是,加载数据库一般都在查询时完成,所有可以定制查询事件的行为,这需要为单据创建按钮事件处理器,并重载查询时基类调用的方法。
1.加载数据的步骤。
2.对数据增、删、改的控制。
因为是虚拟主子表的数据结构,它在进行数据的操作时需要额外的控制。这个问题的本质是在将前台数据写回后台时,需将前台的主子表结构还原为单据结构。
在编辑(行操作)完毕,点击保存按钮。程序会从界面企鹅的被修改的数据,这些数据被标识成新增、删除、修改等状态,提交给后台处理。对于真正的主子表,表头数据和表头数据会分别存储到对应的表中,但对于虚拟主子表的单据,主表数据加上子表数据的一行才构成数据表中的一行记录。
变体四:多子表的卡片型单据
多子表单据在界面显示上通常是表头 + 多页签的表体,每一个页签代表一个子表。在UI工厂中,这种单据也得到了抽象,主要是从两个角度抽象的
#对UI显示界面的抽象。多子表单据的UI类不使用BillCardUI做基类,而是继承于一个新的UI基类,MultiChildBillCardUI,它封装了多个页签的界面显示。
#对VO数据的抽象。在NC应用中,主子表数据存储在聚合VO中,它支持一个主表+一个子表的结构,但是这种结构不适合于多子表的情况。因此,UI工厂设计了接口IExAggVO,需要装载多子表数据的聚合VO类,应该实现此接口,并实现它的关键方法。
步骤
1. 定义多子表
多子表VO是聚合VO,同时又象一个装着多个子表数据的容器,因此它必然继承自AggregatedValueObject的类层次,又实现多子表VO的接口,IExAggVO
2. 定义单据界面控制类
3. 定义事件处理类
4. 定义业务代理类
简单介绍过业务代理类,它的缺省行为主要是获取后台数据。为了将职责划分得更清楚,我们可以创建专门业务的代理类。
前面的例子中一直没有涉及业务代理类,但是,对于多子表的单据,一定要创建业务代理类,并重载其中的一个方法。原因:在加载数据时,除了虚拟主子表的单据自己负责加载所有表头,表体数据,并一次性地在BillUIBuffer中缓存所有已组织好的聚合VO对象外,其它表结构的单据都要先加载表头数据,然后在必要时才通过主子表的主键关系取得表体数据。真正的主表 -- 多子表关系往往也满足这样的主键关系,但是,为了控制的灵活,UI工厂将数据组成多子表结构的任务放到了业务代理中。多子表单据应创建自己的业务代理类,并重载loadChildDataAry方法。
5. 定义单据UI类
发表评论
-
零碎脑残
2012-12-05 10:08 1202if (NCOptionPane.showConfir ... -
表体设置颜色
2012-04-16 15:22 1064//取得选定的行 int[] rows = ge ... -
一些查询模板的默认值
2012-04-16 14:54 1057查询条件的取值可以使用系统函数,带有#value#的为系 ... -
获得焦点
2012-04-16 14:37 1364表头: (getBillCardPanel().get ... -
JTree的一些常用方法
2012-04-16 14:20 1385在实际开发过程中会经常使用JTree组件,平时会遇到这样 ... -
根据身份证号生成出生日期
2012-04-16 14:05 2926/** * @创建时间:2007-5-10 下午04 ... -
初始化超级用户root密码
2012-01-11 22:15 1175初始化超级用户root密码 -
NC表型参照类
2011-09-05 15:40 7033package nc.ui.bd.ref; /** ... -
Excel导出功能
2011-08-19 14:40 1291NC中功能事件代码: ... -
节点号编码
2011-05-17 22:30 943新开发单据或档案若越过license验证在节点号设置时有要求: ... -
NC5.5中无法创建账套
2011-05-15 17:19 885NC5.5中无法创建账套 错误显示:后台Ser ... -
BillListPanel中获得选中的行
2011-05-15 17:16 1332int row = getBillListPanel() ... -
NC数据排序
2011-05-15 16:12 991VO排序 -- nc.vo.trade.voutil ... -
消息过长对话框
2011-04-07 21:55 1217package nc.ui.ldzl.dlg; i ... -
UFDouble常用方法
2011-04-04 21:21 8143UFDouble ufDouble = new UFDo ... -
对联
2011-03-26 13:16 878横联 : 单据开发 上联 : 主表子表主子表 ... -
页签转换
2011-03-20 14:18 1161A.。 在ClientUI类中实现ChangeListener ... -
BillModel 单据表体表模式
2011-03-17 12:54 1715//单据表体表模式,带有默认合计行表模式、行号表模式。 th ... -
获取单据号
2011-03-17 11:25 1626ZlRentVO zlRentVO = new ZlRe ... -
参照可手写录入,不验证
2011-03-17 10:49 1060//参照可手写录入,不验证 UIRefPane ref ...
相关推荐
这是一款可以快速制作卡片翻转效果的jquery插件。用户可以不了解CSS3语法,就可以通过该插件制作出炫酷的卡片翻转效果。
参考资料-U9资产卡片单据类型.zip
U9C单据开发资源文档
卡片制作专用工具,支持自定义制作卡片,美工卡片。
NC通过按钮打开另一个节点单据,通过在NC节点中增加按钮打开某个节点,并且通过前一个节点的数据联查到新节点的数据
电信设备-天线装置、卡片型通信器件以及通信终端装置.zip
利用fragment开发的卡片切换界面,可以替代原有的tabhost
用PowerPoint制作卡片式PPT学习教案.pptx
基于weex来制作卡片堆叠和拖拽效果
龙朱OCG卡片制作器,3.0版本 龙朱OCG卡片制作器,3.0版本 龙朱OCG卡片制作器,3.0版本 龙朱OCG卡片制作器,3.0版本 龙朱OCG卡片制作器,3.0版本 龙朱OCG卡片制作器,3.0版本
简单的利用MFC制作个人卡片,其中包括了列表框,复选框的使用
jQuery快速制作卡片翻转效果的插件flip.js.zip
cpa卡片消息QQxml消息制作器超级消息制作器 直接解压打开就行,win7可用,内带跳转链接生成网站,模板套用资源与思路
jQuery+CSS3制作卡片式步骤操作ui交互特效代码.zip
这是一个可以自定义的一个游戏王卡片制作软件。当然想要制作其他的也是可以的,也可以制作火影,死神,等等,可以自定义
26个英文字母卡(大小写分开-制作卡片用).docx
卡片制作教案.ppt
专业名片、卡片、胸牌制作系统cardmaker.5.2破解版专业名片、卡片、胸牌制作系统cardmaker.5.2破解版