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枚举值的全名

  1. declare @now datetime
  2. set @now=getdate()
  3. --同步单个枚举
  4. declare @FN varchar(550), @ClsID bigint, @UID varchar(50) select @FN='Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnum'
  5. --此处只需填入你要更新的枚举FullName,示例为标准产品的业务员类型枚举
  6. select @ClsID=Local_ID,@UID=ID from UBF_MD_Class where FullName = 'Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnum' and ClassType=3 select @ClsID,@UID
  7. --先删除已有的数据
  8. delete from UBF_Sys_ExtEnumType_Trl where ID=@ClsID or ID in (select ID from ubf_sys_extenumtype where UID=@UID)
  9. delete from ubf_sys_extenumtype where ID=@ClsID or UID=@UID delete from UBF_Sys_ExtEnumValue_Trl
  10. where ID in (select ID from ubf_sys_extenumvalue where ExtEnumType=@ClsID or ExtEnumTypeUID=@UID)
  11. delete from ubf_sys_extenumvalue where ExtEnumType=@ClsID or ExtEnumTypeUID=@UID
  12. --下面为插入最新数据
  13. 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
  14. 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
  15. left join ubf_RES_resourcevalue b on cast(a.[iD] as varchar(50)) = cast(b.resourcename as varchar(50)) where Local_ID = @ClsID
  16. 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,
  17. a.defaultvalue as evalue,issystem,md_class_id as ExtEnumTypeUID from ubf_md_attribute as a
  18. 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
  19. insert into ubf_sys_extenumvalue_trl select a.local_id as id,'zh-CN',c.[displayname] as [name] from ubf_md_attribute as a
  20. inner join ubf_md_class as b on cast(a.md_class_id as varchar(50))=cast(b.id as varchar(50))
  21. 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代码如下:

  1. public void AfterOnLoad()
  2. {
  3. string paramWhere = null;
  4. //查询
  5. PDFormMessage.ShowConfirmDialog(this.Page, "c26b593b-0d17-4986-a814-bb32cfdbc046", "", "", Title, wpFindID.ClientID, this.BtnFind, paramWhere);
  6.  
  7. FlexFieldHelper.SetDescFlexField(new DescFlexFieldParameter[] { new DescFlexFieldParameter(this.FlexFieldPicker0, this.Model.HomaGiftDoc) });
  8. FlexFieldHelper.SetDescFlexField(new DescFlexFieldParameter[] { new DescFlexFieldParameter(this.DataGrid8, this.DataGrid8.Columns.Count - , "DescFlexField") });
  9. //开启个性化
  10. // UFIDA.U9.UI.PDHelper.PersonalizationHelper.SetPersonalizationEnable((BaseWebForm)this, true);
  11. //取得提示信息资源:是否删除当前记录
  12. string message = PDResource.GetDeleteConfirmInfo();
  13.  
  14. //绑定注册弹出对话框到删除按钮
  15. PDFormMessage.ShowConfirmDialog(this.Page, message, "", this.BtnDelete);
  16. PDFormMessage.ShowConfirmDialog(this.Page, "确认放弃当前记录?", "", this.BtnCancel);
  17.  
  18. //引入命名空间:
  19. //UFIDA.U9.Base.BaseBP.Agent.dll(代理)
  20. //UFIDA.U9.Base.BaseBP.Deploy.dll(弱类型数据)
  21.  
  22. //设置默认行号
  23. GetProfileValueProxy bpObj = new GetProfileValueProxy();
  24. bpObj.ProfileCode = "SysLineNo";
  25. PVDTOData pVTDOData = bpObj.Do();
  26. //行GRID
  27. ((IAutoRowNo)this.DataGrid8.Columns["RowNo"]).Sequence = true;
  28. ((IAutoRowNo)this.DataGrid8.Columns["RowNo"]).SequenceStep = Int32.Parse(pVTDOData.ProfileValue);
  29. ((IAutoRowNo)this.DataGrid8.Columns["RowNo"]).SequenceStart = Int32.Parse(pVTDOData.ProfileValue);
  30. }
  31.  
  32. public void AfterUIModelBinding()
  33. {
  34. //设置单据状态只读
  35. ((UFSoft.UBF.UI.ControlModel.IUIFieldBindingDataBindControl)this.GiftDocStatus150).ReadOnly = true;
  36.  
  37. //设置行号不可编辑
  38. this.DataGrid8.Columns["RowNo"].Enabled = false;
  39.  
  40. DisableBtn();
  41. }
  42.  
  43. /// <summary>
  44. /// 控制按钮显示
  45. /// </summary>
  46. private void DisableBtn()
  47. {
  48. if (UFIDA.U9.UI.PDHelper.NavigateManager.IsModelPopup(this) || UFIDA.U9.UI.PDHelper.NavigateManager.IsTitleLink(this))
  49. {
  50. //this.BtnOk.Visible = true;
  51. //this.BtnClose.Visible = true;
  52. this.BtnList.Enabled = false;
  53. }
  54. else
  55. {
  56. //this.BtnOk.Visible = false;
  57. //this.BtnClose.Visible = false;
  58. this.BtnList.Enabled = true;
  59. }
  60. //没有数据时
  61. if (this.Model.HomaGiftDoc.FocusedRecord.ID < 0L)
  62. {
  63. this.BtnApprove.Enabled = false;
  64. this.BtnUndoApprove.Enabled = false;
  65. this.BtnSubmit.Enabled = false;
  66. this.BtnDelete.Enabled = false;
  67. this.BtnCopy.Enabled = false;
  68. }
  69. else
  70. {
  71. //据单据状态控制按钮
  72. switch (this.Model.HomaGiftDoc.FocusedRecord.GiftDocStatus)
  73. {
  74. case : //开立
  75. this.BtnApprove.Enabled = false;
  76. this.BtnUndoApprove.Enabled = false;
  77. this.BtnSubmit.Enabled = true;
  78. this.BtnDelete.Enabled = false;
  79. break;
  80. case : //核准中
  81. this.BtnApprove.Enabled = true;
  82. this.BtnUndoApprove.Enabled = true;
  83. this.BtnSubmit.Enabled = false;
  84. this.BtnDelete.Enabled = true;
  85. break;
  86. case : //已核准
  87. this.BtnApprove.Enabled = false;
  88. this.BtnUndoApprove.Enabled = false;
  89. this.BtnSubmit.Enabled = false;
  90. this.BtnDelete.Enabled = false;
  91. break;
  92. }
  93. }
  94. }

WebPart代码

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

  1. /// <summary>
  2. /// 列表
  3. /// </summary>
  4. /// <param name="sender"></param>
  5. /// <param name="e"></param>
  6. private void ListClick_Extend(object sender, UIActionEventArgs e)
  7. {
  8. //List Click Code Demo...
  9. this.CurrentPart.NavigatePage("440a2758-90f7-4281-a672-84c20d39ebfcListURL", null);
  10. //this.ListClick_DefaultImpl(sender,e) ;
  11.  
  12. //调用模版定义的默认实现方法.如需扩展,请直接在此编程.
  13. this.ListClick_DefaultImpl(sender, e);
  14. }
  15.  
  16. /// <summary>
  17. /// 提交
  18. /// </summary>
  19. /// <param name="sender"></param>
  20. /// <param name="e"></param>
  21. private void SubmitClick_Extend(object sender, UIActionEventArgs e)
  22. {
  23. DoApprove(Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnumData.Approving);
  24. //调用模版定义的默认实现方法.如需扩展,请直接在此编程.
  25. this.SubmitClick_DefaultImpl(sender, e);
  26. }
  27.  
  28. /// <summary>
  29. /// 审核
  30. /// </summary>
  31. /// <param name="sender"></param>
  32. /// <param name="e"></param>
  33. private void ApproveClick_Extend(object sender, UIActionEventArgs e)
  34. {
  35. DoApprove(Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnumData.Approved);
  36. //调用模版定义的默认实现方法.如需扩展,请直接在此编程.
  37. this.ApproveClick_DefaultImpl(sender, e);
  38. }
  39.  
  40. /// <summary>
  41. /// 弃审
  42. /// </summary>
  43. /// <param name="sender"></param>
  44. /// <param name="e"></param>
  45. private void UnApproved_Extend(object sender, UIActionEventArgs e)
  46. {
  47. DoApprove(Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnumData.OpenL);
  48. //调用模版定义的默认实现方法.如需扩展,请直接在此编程.
  49. this.UnApproved_DefaultImpl(sender, e);
  50. }
  51.  
  52. /// <summary>
  53. /// 审核操作
  54. /// </summary>
  55. /// <param name="docStatus">须引入单据状态BE弱类型数据dll,即:Homa.test.ch01.GiftDocStatusBE.Deploy.dll</param>
  56. private void DoApprove(Homa.test.ch01.GiftDocStatusBE.GiftDocStatusEnumData docStatus)
  57. {
  58. //查找到当前BE记录行
  59. HomaGiftDocRecord focusedRecord = this.CurrentModel.HomaGiftDoc.FocusedRecord;
  60. if (focusedRecord == null) return;
  61. this.CurrentModel.ClearErrorMessage();
  62.  
  63. //取得当前记录单据状态
  64. int? oldState = focusedRecord.GiftDocStatus;
  65.  
  66. //保存单据状态
  67. focusedRecord.GiftDocStatus = Convert.ToInt32(docStatus);
  68. this.CommonAction.Save();
  69.  
  70. if (!this.CurrentModel.ErrorMessage.hasErrorMessage)
  71. this.NavigateAction.Refresh(null);//保存成功
  72. else
  73. focusedRecord.GiftDocStatus = oldState;//保存失败
  74. }

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. 基于Java Mina 通信框架的JT/T809转发服务器设计

    Apache MINA 是 Apache 组织的一个开源项目,为开发高性能和高可用性的网络应用程序提供了非常便利的框架. 也是Java开发者的一个福利(.NET目前还没有类似封装的这么好的基础sock ...

  2. JSON--JavaScript Object Notation

    概念 一种轻量级的数据交换格式,本质是特定格式的字符串,是客户端和服务器端交互数据的常用选择 规则 []集合 [value1,value2] {}对象 {key1:value1,key2,value2 ...

  3. YUM源

    由于自己想做一个简单的博客玩玩,需要去搭建apache,mysql和php,如果只是用rpm安装包的话,安装的速度太慢不说,最主要的是包之间的关联太让人蛋疼了,所以最好还是是用yum来安装吧,当然这只 ...

  4. nginx,文件下载,预览,防止浏览器下载时直接打开,防止预览时直接下载文件,解决nginx谷歌浏览器不支持下载问题

    公司项目逐渐增多,对效率的要求越来越高,不同项目分部不同服务器,最初想用nginx 就是为了多个项目用一个url和服务器宕机解决方案 nginx也可作为附件服务器,毕竟nginx也对静态文件支持较好, ...

  5. 霍尼韦尔FC400A与FC400B的区别

    给霍尼韦尔官方打电话咨询了下,发现两者区别不大,唯一的区别是400B可以和主机联动,也就是主机关的时候,400B也可以自动关闭,不需要手动去关闭电源,这样非常方便. 本来官方是只有400A的时候,但是 ...

  6. python的应该关注的语法

    1.try...finally def test_return(): try: print "try" raise ValueError("valueError" ...

  7. 轻松三步教你配置Oracle—windows环境

    最近笔者在学习Oracle的时候,虽然度过了大家所说的安装难题,但是又遇到了一系列的问题,经过多方求教才知道原来是自己仅仅是安装了Oracle,却没有在环境变量中进行相应的配置.笔者也像大家遇到问题时 ...

  8. 【译】Import Changes from Direct3D 11 to Direct3D 12

    译者:林公子 出处:木木的二进制人生 转载请注明作者和出处,谢谢! 这是微软公布的Direct3D 12文档的其中一篇,此翻译留作学习记录备忘,水平有限,错漏难免,还望海涵. 原文链接是https:/ ...

  9. iOS屏幕旋转

    三种方法 需求:全局主要是竖屏 个别界面需要横屏

  10. java 创建string对象机制 字符串缓冲池 字符串拼接机制

    对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...