1.构造UI项目后,打开生成的UI项目代码,在Model文件下,如初始化一些字段的值

2.订单明细行中行号设置、订单基本操作按钮提示
UFIDA.U9.Base.BaseBP.Agent.dll(代理)
UFIDA.U9.Base.BaseBP.Deploy.dll(实现弱类型)
该dll在Portal\ApplicationServer\Libs目录下,因UI是通过代理去调用,且只能用弱类型去实现

3.枚举值,如单据状态枚举值可能会出现显示出来没有值须运行以下一段sql,而代码中的:Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnum,即如下图所示的单据类型BE枚举值的全名

declare @now datetime
set @now=getdate()
--同步单个枚举
declare @FN varchar(550), @ClsID bigint, @UID varchar(50) select @FN='Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnum'
--此处只需填入你要更新的枚举FullName,示例为标准产品的业务员类型枚举
select @ClsID=Local_ID,@UID=ID from UBF_MD_Class where FullName = 'Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnum' and ClassType=3 select @ClsID,@UID
--先删除已有的数据
delete from UBF_Sys_ExtEnumType_Trl where ID=@ClsID or ID in (select ID from ubf_sys_extenumtype where UID=@UID)
delete from ubf_sys_extenumtype where ID=@ClsID or UID=@UID delete from UBF_Sys_ExtEnumValue_Trl
where ID in (select ID from ubf_sys_extenumvalue where ExtEnumType=@ClsID or ExtEnumTypeUID=@UID)
delete from ubf_sys_extenumvalue where ExtEnumType=@ClsID or ExtEnumTypeUID=@UID
--下面为插入最新数据
insert into ubf_sys_extenumtype select local_id as id,@now,'admin',@now,'admin',0,fullname as code,isextend,id as uid,0 from ubf_md_class
where Local_ID = @ClsID insert into ubf_sys_extenumtype_trl select a.local_id as id,'zh-CN',b.[displayname] as [name],b.[Description] from ubf_md_class a
left join ubf_RES_resourcevalue b on cast(a.[iD] as varchar(50)) = cast(b.resourcename as varchar(50)) where Local_ID = @ClsID
insert into ubf_sys_extenumvalue select a.local_id as id,@now,'admin',@now,'admin',0,a.[Local_Class_ID] as ExtEnumType , a.[name] as code,
a.defaultvalue as evalue,issystem,md_class_id as ExtEnumTypeUID from ubf_md_attribute as a
inner join ubf_md_class as b on cast(a.md_class_id as varchar(50))=cast(b.id as varchar(50)) where b.Local_ID = @ClsID
insert into ubf_sys_extenumvalue_trl select a.local_id as id,'zh-CN',c.[displayname] as [name] from ubf_md_attribute as a
inner join ubf_md_class as b on cast(a.md_class_id as varchar(50))=cast(b.id as varchar(50))
left join ubf_RES_resourcevalue c on cast(a.[ID] as varchar(50)) = cast(c.resourcename as varchar(50)) where b.Local_ID = @ClsID

4.查找参照代码中引用,如下图所示:

5.WebPart代码如下:

        public void AfterOnLoad()
{
string paramWhere = null;
//查询
PDFormMessage.ShowConfirmDialog(this.Page, "c26b593b-0d17-4986-a814-bb32cfdbc046", "", "", Title, wpFindID.ClientID, this.BtnFind, paramWhere); FlexFieldHelper.SetDescFlexField(new DescFlexFieldParameter[] { new DescFlexFieldParameter(this.FlexFieldPicker0, this.Model.HomaGiftDoc) });
FlexFieldHelper.SetDescFlexField(new DescFlexFieldParameter[] { new DescFlexFieldParameter(this.DataGrid8, this.DataGrid8.Columns.Count - , "DescFlexField") });
//开启个性化
// UFIDA.U9.UI.PDHelper.PersonalizationHelper.SetPersonalizationEnable((BaseWebForm)this, true);
//取得提示信息资源:是否删除当前记录
string message = PDResource.GetDeleteConfirmInfo(); //绑定注册弹出对话框到删除按钮
PDFormMessage.ShowConfirmDialog(this.Page, message, "", this.BtnDelete);
PDFormMessage.ShowConfirmDialog(this.Page, "确认放弃当前记录?", "", this.BtnCancel); //引入命名空间:
//UFIDA.U9.Base.BaseBP.Agent.dll(代理)
//UFIDA.U9.Base.BaseBP.Deploy.dll(弱类型数据) //设置默认行号
GetProfileValueProxy bpObj = new GetProfileValueProxy();
bpObj.ProfileCode = "SysLineNo";
PVDTOData pVTDOData = bpObj.Do();
//行GRID
((IAutoRowNo)this.DataGrid8.Columns["RowNo"]).Sequence = true;
((IAutoRowNo)this.DataGrid8.Columns["RowNo"]).SequenceStep = Int32.Parse(pVTDOData.ProfileValue);
((IAutoRowNo)this.DataGrid8.Columns["RowNo"]).SequenceStart = Int32.Parse(pVTDOData.ProfileValue);
} public void AfterUIModelBinding()
{
//设置单据状态只读
((UFSoft.UBF.UI.ControlModel.IUIFieldBindingDataBindControl)this.GiftDocStatus150).ReadOnly = true; //设置行号不可编辑
this.DataGrid8.Columns["RowNo"].Enabled = false; DisableBtn();
} /// <summary>
/// 控制按钮显示
/// </summary>
private void DisableBtn()
{
if (UFIDA.U9.UI.PDHelper.NavigateManager.IsModelPopup(this) || UFIDA.U9.UI.PDHelper.NavigateManager.IsTitleLink(this))
{
//this.BtnOk.Visible = true;
//this.BtnClose.Visible = true;
this.BtnList.Enabled = false;
}
else
{
//this.BtnOk.Visible = false;
//this.BtnClose.Visible = false;
this.BtnList.Enabled = true;
}
//没有数据时
if (this.Model.HomaGiftDoc.FocusedRecord.ID < 0L)
{
this.BtnApprove.Enabled = false;
this.BtnUndoApprove.Enabled = false;
this.BtnSubmit.Enabled = false;
this.BtnDelete.Enabled = false;
this.BtnCopy.Enabled = false;
}
else
{
//据单据状态控制按钮
switch (this.Model.HomaGiftDoc.FocusedRecord.GiftDocStatus)
{
case : //开立
this.BtnApprove.Enabled = false;
this.BtnUndoApprove.Enabled = false;
this.BtnSubmit.Enabled = true;
this.BtnDelete.Enabled = false;
break;
case : //核准中
this.BtnApprove.Enabled = true;
this.BtnUndoApprove.Enabled = true;
this.BtnSubmit.Enabled = false;
this.BtnDelete.Enabled = true;
break;
case : //已核准
this.BtnApprove.Enabled = false;
this.BtnUndoApprove.Enabled = false;
this.BtnSubmit.Enabled = false;
this.BtnDelete.Enabled = false;
break;
}
}
}

WebPart代码

6.审核操作代码如下,代码写在Action文件下,须先引入单据状态实体弱类型数据dll,即:Homa.test.ch01.GiftDocStatusBE.Deploy.dll

        /// <summary>
/// 列表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ListClick_Extend(object sender, UIActionEventArgs e)
{
//List Click Code Demo...
this.CurrentPart.NavigatePage("440a2758-90f7-4281-a672-84c20d39ebfcListURL", null);
//this.ListClick_DefaultImpl(sender,e) ; //调用模版定义的默认实现方法.如需扩展,请直接在此编程.
this.ListClick_DefaultImpl(sender, e);
} /// <summary>
/// 提交
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SubmitClick_Extend(object sender, UIActionEventArgs e)
{
DoApprove(Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnumData.Approving);
//调用模版定义的默认实现方法.如需扩展,请直接在此编程.
this.SubmitClick_DefaultImpl(sender, e);
} /// <summary>
/// 审核
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ApproveClick_Extend(object sender, UIActionEventArgs e)
{
DoApprove(Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnumData.Approved);
//调用模版定义的默认实现方法.如需扩展,请直接在此编程.
this.ApproveClick_DefaultImpl(sender, e);
} /// <summary>
/// 弃审
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void UnApproved_Extend(object sender, UIActionEventArgs e)
{
DoApprove(Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnumData.OpenL);
//调用模版定义的默认实现方法.如需扩展,请直接在此编程.
this.UnApproved_DefaultImpl(sender, e);
} /// <summary>
/// 审核操作
/// </summary>
/// <param name="docStatus">须引入单据状态BE弱类型数据dll,即:Homa.test.ch01.GiftDocStatusBE.Deploy.dll</param>
private void DoApprove(Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnumData docStatus)
{
//查找到当前BE记录行
HomaGiftDocRecord focusedRecord = this.CurrentModel.HomaGiftDoc.FocusedRecord;
if (focusedRecord == null) return;
this.CurrentModel.ClearErrorMessage(); //取得当前记录单据状态
int? oldState = focusedRecord.GiftDocStatus; //保存单据状态
focusedRecord.GiftDocStatus = Convert.ToInt32(docStatus);
this.CommonAction.Save(); if (!this.CurrentModel.ErrorMessage.hasErrorMessage)
this.NavigateAction.Refresh(null);//保存成功
else
focusedRecord.GiftDocStatus = oldState;//保存失败
}

Action中审批代码

至此单据的基本功能开发完毕

单据UI代码开发的更多相关文章

  1. 单据UI界面设计开发

    1.新建单据界面数据 2.创建数据模型,包括单据.单据行.设置应用缺省特性,每个模型树下只有一个红色项 3.新增动作,系统默认没有弃审支作按钮事件 4. 新增UI Form,选择对应的模型树及表单类别 ...

  2. JASPER打印单据,标签开发培训, 界面开发培训

    JASPER打印单据,标签开发培训软件:TIBC JASPER Studio.Jaspersoft Studio是一个专为JasperReports报表引擎而开发的报表设计器,是 iReport设计器 ...

  3. Ruby入门--Linux/Windows下的安装、代码开发及Rails实战

    Ruby入门--Linux/Windows下的安装.代码开发及Rails实战 http://www.linuxidc.com/Linux/2014-04/100242.htm Ubuntu 13.04 ...

  4. 使用 Gradle 实现一套代码开发多个应用

    代码地址如下:http://www.demodashi.com/demo/11297.html 在文章 使用 Gradle 对应用进行个性化定制 中,我们能够针对一个应用的正式服.测试服.超管服等其他 ...

  5. "零代码”开发B/S企业管理软件之一 :怎么创建数据库表

    声明:该软件为本人原创作品,多年来一直在使用该软件做项目,软件本身也一直在改善,在增加新的功能.但一个人总是会有很多考虑不周全的地方,希望能找到做同类软件的同行一起探讨. 本人文笔不行,能把意思表达清 ...

  6. APICloud发布低代码开发平台

    云原生的出现,致使传统IT模式正在集中向云架构.云开发转型,其中在企业业务的互联网化.数字化进程中尤为突出,并衍生出“敏捷开发”.“快速迭代”的刚性需求.面对双模IT,如何打造全新的IT团队与模式?并 ...

  7. 开发者的拯救者还是掘墓人?解密低代码开发平台 ZT

    据英国<金融时报>消息称,私募股权投资机构 KKR 和高盛共同筹集了 3.6 亿美元,以收购低代码开发平台 OutSystems 的“大量”少数股权,本次交易对 OutSystems 的估 ...

  8. 低代码开发LCDP,Power Apps系列 - 新建泰勒创新中心门户案例

    低代码简介 上世纪八十年代,美国就有一些公司和实验室开始了可视化编程的研究,做出了4GL"第四代编程语言",到后来衍生成VPL"Visual Programming La ...

  9. 低代码开发LCDP,Power Apps系列 - 搭建入职选购电脑设备案例

    低代码简介 上世纪八十年代,美国就有一些公司和实验室开始了可视化编程的研究,做出了4GL"第四代编程语言",到后来衍生成VPL"Visual Programming La ...

随机推荐

  1. Mongodb在Linux下的安装和启动和配置

    第一步:下载mongodb安装包,下载版本:2.0.2-rc2 下载链接: http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.1.tgz 第 ...

  2. 如何使用JDBC链接数据库

    1.加载数据库驱动 不同的数据库加载的驱动不一样 Class.forName(com.MySQL.jdbc.Driver) Class.forName(oracle.jdbc.driver.Oracl ...

  3. NDK开发-简介&环境搭建(Eclipse,Android Studio)

    NDK简介 NDK(Native Development Kit)是一套工具集,允许你在Android应用中嵌入c或c++. 使用NDK的好处主要有以下4点: 安全:由于apk的java层代码很容易被 ...

  4. paper 131:【图像算法】图像特征:GLCM【转载】

    转载地址:http://www.cnblogs.com/skyseraph/archive/2011/08/27/2155776.html 一 原理 1 概念:GLCM,即灰度共生矩阵,GLCM是一个 ...

  5. [SublimeText] 安装包管理

    由于各种访问原因,因此记录一下给自己使用,原文地址如下: http://www.bonusbits.com/wiki/HowTo:Setup_Package_Control_for_Sublime_T ...

  6. win2012,oracle11g,sqlplus切换实例的方法

    问题环境:windows 2012 r2 64位  ,oracle 11.2.0.4,多个实例. 在这种情况下, sqlplus "/as sysdba" 默认登录的是系统后面安装 ...

  7. VS2017 RC IIS Express 无法启动 环境不正确

    Unable to start program 'C:\Program Files (x86)\IIS Express\iisexpress.exe'. The environment is inco ...

  8. python函数基础 与文件操作

    函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...

  9. ArcGIS10.1 发布气温插值GP服务

    首先通过ModelBuilder 工具 构建模型 然后通过模块右键 设置输入参数 或者直接将一个模块设为输入参数 在输出模块的右键属性上 可以设置lyr文件用于渲染 设置数据添加到显示用于不是发布的时 ...

  10. 【已解决】新搭建的VPN服务器客户端无法正常连接

    昨天花了一天的时间,终于把VPN服务器搭建好了.但是客户端却一直提示无法拨号成功.查看VPN日志如下:[root@localhost log]# tail -f messages Jun 13 14: ...