U9 卡片取消开发范例说明 版 本 号 :V1.0 作者: 版本记录 【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】 版本 修改与参与人 修改时间 修改原因 修改概述 审批人1.0 罗鹏 2006/06/24 原始文档建立 一.问题域说明 应用于有取消按钮的节点,本范例主要讲解取消开发的原理 二.基本原理 步骤: 1、获取当前记录 Record。 2、判断当前记录状态,如果是新增状态将新增时的初始化数据深度 Copy 到 Record中(深度 Copy:Copy 该记录的子记录)。如果是修改状态则根据 Record 的唯一索引重新加载该记录 Record,包括该记录 Record 的所有子记录。 3、将记录 Record 状态置成未修改。 三.关键代码及说明 Action 文件夹 ItemRequestUIModelActionExtend.cs 文件 629行 在 XX节点 Action 文件夹中的XXXActionExtend.cs 文件中 编写一个方法 private void Func_Cancel() { //按着原理的步骤 第一步:1、获取当前记录 Record。 //置状态栏信息为空 this.CurrentPart.ShowWindowStatus(string.Empty); //获取当前记录 IUIRecord record = this.MainView.FocusedRecord; if (record == null) return; //判断该记录的状态 对应原理第二步 if (record.DataRecordState == System.Data.DataRowState.Added)//新增状态下 复制数据 { //创建一条新纪录并且将其copy到当前记录 true 表示是否深度copy this.MainView.NewUIRecord().CopyTo(record, true); } else if (record.DataRecordState == System.Data.DataRowState.Modified)//修改状态下重新加载数据 { IUIModel refreshModel; //判断是否为主试图 if (this.MainView.IsMainView) refreshModel = this.CurrentModel.Clone(false); else refreshModel = this.CurrentModel.GetSubViewModel(this.MainView); //重新加载该记录 refreshModel[MainView.Name].CurrentFilter.OPath = "ID=" + this.MainView.FocusedRecord.PrimaryKey; IUIModel resultModel = this.CommonAction.Load(refreshModel); //将加载出来的Model重新置给当前Model foreach (IUIView view in resultModel.Views) { this.CurrentModel[view.Name].FromUIView(view); } //第三步 Record状态置成未修改 this.CurrentPart.PageStatus = UFSoft.UBF.UI.IView.PartStateType.Unchanged; } //页面状态栏显示取消成功信息 this.CurrentPart.ShowWindowStatus(UFIDA.U9.UI.PDHelper.PDResource.GetCancelSucessInfo()); } 四.源代码使用说明 下载:http://u9scm91/isvdoc/download/U9 研发体系(卡片取消开发范例).rarAction 文件夹 ItemRequestUIModelActionExtend.cs 文件 取消事件中调用 private void Main_Cencel_Extend(object sender, UIActionEventArgs e) { //调用模版定义的默认实现方法.如需扩展,请直接在此编程. this.Main_Cencel_DefaultImpl(sender,e) ; this.Func_Cancel(); } 五.组装发布说明(可选) 1、解压代码包 ItemRequestUI.rar 2、编译 3、将 UFIDA.U9.SCM.INV.ItemRequestUI.WebPart.dll,UFIDA.U9.SCM.INV.ItemRequestUI.WebPart.pdb 文件 部署到 Portal\UILib 下运行即可。