U811.1 客开培训资料之UAP ///
///
///
public virtual void ReceiptUnLoading(VoucherProxy ReceiptObject, VoucherButtonArgs exitCommand) {
}
///
/// 运行时表单关闭之后调用的接口,可以处理表单关闭之后的业务要求,如释放已经申请到的功能
///
///
/// public virtual void ReceiptUnLoaded(VoucherProxy ReceiptObject, VoucherButtonArgs exitCommand) {
1、
说明
表单功能开发(门户工具栏按钮功能开发)
ReceiptPluginBase类中的方法
///
/// 门户工具栏按钮被点击时触发该方法,可以根据参数判断是哪个按钮被触发 ///
///
public
virtual
IButtonEventHandler
ButtonArgs
,
VoucherProxy
GetButtonEventHandler(VoucherButtonArgs
voucherObject); 这个方法是表单功能按钮执行的入口,根据在UAP表单功能的功能管理(见
图2)里添加的不同功能按钮的ButtonKey来区别不同的功能。返回值类型为UFIDA.U8.UAP.UI.Runtime.Model.IButtonEventHandler接口,该返回值对象会被UAP运行时调用来执行该对象中的方法。IButtonEventHandler接口定义了三个方法,按照运行时被调用执行的先后顺序分别为:
string Excuting (VoucherProxy ReceiptObject)、
string Excute (VoucherProxy ReceiptObject, string PreExcuteResult)、 string Excuted(VoucherProxy ReceiptObject, string PreExcuteResult)。 注:
(1)三个方法的返回值为xml字符串,其格式为
\,该返回值用来标示当前方法是否成功执行,记录在result属性里,errinfo属性用来记录任何可能的信息。Excuting
U811.1 客开培训资料之UAP
方法的返回值可以作为Excute方法的第二个参数PreExcuteResult传入Excute,你可以在Excute方法体重分析传入的信息决定程序是否继续执行,或作出其他处理等,同样,Excute方法的返回值也可作为Excuted方法的参数传入,并作必要检查。另外,你可以在保证上面规定的xml结构的前提下,在
(2)三个方法共有的参数就是当前表单功能按钮可以操作的表单模型。可以从该对象中取到当前可以操作的任何数据。
示例
[IsImplementAttribute(true)] Public override IButtonEventHandler
GetButtonEventHandler(VoucherButtonArgs ButtonArgs) {
//保存按钮----UAP已有功能的部分修改开发
if (ButtonArgs.ButtonKey == \) {
return new AcceptOrderButton(); }
//审核按钮----UAP已有功能替代修改开发
if (ButtonArgs.ButtonKey == \) {
return new AuditButton(AuditType.Audit); }
//锁定按钮----新增功能开发
if (ButtonArgs.ButtonKey == \) {
return new LockVoucherButton(LockType.Lock); } }
这个方法是表单功能按钮执行的入口,IsImplementAttribute属性需要手工添加到方法上面。根据在UAP表单的功能管理里不同功能按钮的ButtonKey来区别不同的功能。上述代码的返回值类型AcceptOrderButton、AuditButton、LockVoucherButton都是继承自UFIDA.U8.UAP.UI.Runtime.Model.IButtonEventHandler接口。
注意项
1) 新增功能开发 说明
在使用UAP进行表单开发时,UAP已经提供的功能都是一些公共功能,而一些表单可能需要很多特别的功能,此时就需要进行新增功能的开发。新增功能开发需要开发者要完全理解当前功能的实际业务,并在实现业务的基础上将对表单相关数据的修改持久化到数据库中,持久化的操作及可能的事务控制等完全由开发人员自己来做。
U811.1 客开培训资料之UAP
示例
//锁定按钮----新增功能开发 双击查看代码 #region 锁定按钮----新增功能开发 using System; using System.Collections.Generic; using System.Text; using UFIDA.U8.UAP.UI.Runtime.Model; using System.Windows.Forms; using System.Data.SqlClient; namespace ufida.u8.uap.plugin.SalesVoucher { public class LockVoucherButton : IButtonEventHandler { public LockVoucherButton() { } #region IButtonEventHandler 成员 public string Excute(VoucherProxy ReceiptObject, string PreExcuteResult) { bool result = false; SqlConnection conn=new SqlConnection(ReceiptObject.LoginInfo.UFDataSqlConSt SqlTransaction tran = null; SqlDataReader rd = null; try { conn.Open(); tran=conn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted); SqlCommand cmd = conn.CreateCommand(); Business b = ReceiptObject.Businesses[\] as Business; BusinessCell cell = b.Cells[\] as BusinessCell; string pkValue = cell.Value; cmd.CommandText = \cVerifier, cCloser,cLocker from so_somain where cSOCode = '\ + pkValue + \; cmd.Transaction = tran; rd = cmd.ExecuteReader(); if (rd.Read()) { string auditMan = \; string closeMan = \; string lockMan = \; if (!rd.IsDBNull(0)) { auditMan = rd.GetString(0); } if (!rd.IsDBNull(1)) { closeMan = rd.GetString(1); } if (!rd.IsDBNull(2)) { lockMan = rd.GetString(2);
U811.1 客开培训资料之UAP
注意项
2) UAP已有功能的修改开发 说明
UAP已经实现了新增表单的保存方法,但是我们可能在使用UAP保存逻辑的基础之上,在保存之前或保存之后对表单的某些数据做一定的修改。具体就是对表单模型中的某些实体属性的值根据业务逻辑的需要做必要的修改再执行已有的表单保存。
U811.1 客开培训资料之UAP
示例
using System; using System.Collections.Generic; using System.Text; using UFIDA.U8.UAP.UI.Runtime.Model; using UFIDA.U8.UAP.UI.Runtime.Common; using System.Xml; namespace ufida.u8.uap.plugin.SalesVoucher { ///