MES开发与应用 课件汇 3.5.1- 3.5.2工业管理软件开发基础-命令的使用- 3.12 工业管理软件开发基础-调度功能的使用与开发_第1页
MES开发与应用 课件汇 3.5.1- 3.5.2工业管理软件开发基础-命令的使用- 3.12 工业管理软件开发基础-调度功能的使用与开发_第2页
MES开发与应用 课件汇 3.5.1- 3.5.2工业管理软件开发基础-命令的使用- 3.12 工业管理软件开发基础-调度功能的使用与开发_第3页
MES开发与应用 课件汇 3.5.1- 3.5.2工业管理软件开发基础-命令的使用- 3.12 工业管理软件开发基础-调度功能的使用与开发_第4页
MES开发与应用 课件汇 3.5.1- 3.5.2工业管理软件开发基础-命令的使用- 3.12 工业管理软件开发基础-调度功能的使用与开发_第5页
已阅读5页,还剩628页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.5命令的使用深圳市信息职业技术学院——平台默认和启用禁用命令的使用&重写命令通用介绍目

录平台默认命令的使用01平台启用禁用命令的使用02重写命令通用介绍03知识回顾通用编辑器介绍;String类型和数值类型编辑器使用介绍;时间类型编辑器;引用类型编辑器;枚举类型编辑器;图片编辑器;Bool类型编辑器;快码编辑器;学习目标通过本节学习可以:掌握平台默认命令的使用?掌握启用禁用命令的使用;了解重写命令的注意事项及规范;了解平台包含哪些默认命令。01平台默认命令的使用平台实现的默认命令平台实现的默认命令平台框架实现的默认命令包括:添加、修改、删除、保存、查询、清空、导出和导入命令。平台默认命令的使用平台默认命令的使用平台默认命令名称的定义基本是在webCommandNames静态类下声明的,所有默认命令实现的都是功能通用逻辑,如果包含非通用逻辑,则需要对命令进行重写。平台默认命令组合的配置:View.UseDefaultCommands(),框架列表和表单命令实现逻辑存在差异。使用命令:View.UseCommands(WebCommandNames.Add);移除命令:View.RemoveCommands(WebCommandNames.Copy);替换命令:View.ReplaceCommands(webCommandNames.Add,typeof(AddUintCommand).FullName);清除所有命令:View.ClearCommands();

导入命令的使用:View.UseImportCommands();02平台启用禁用命令的使用思考题框架启用禁用命令是如何进行开发实现的?启用禁用命令开发实现示例在读者管理页面中添加“启用”和“禁用”命令,逻辑如下: 1、“启用”和“禁用”按钮可以批量操作; 2、选择的数据行状态包含“启用”状态,“启用”按钮不可操作,“禁用”按钮可操作; 3、选择的数据行状态包含“禁用”状态,“启用”按钮可操作,“禁用”按钮不可操作;业务描述启用禁用命令开发实现示例实现说明:启用、禁用命令没有特殊的业务逻辑要求,我们可以使用框架的启用禁用命令来实现,实现步骤如下: 1、在读者管理实体类中添加State属性,关联框架的状态枚举;实现步骤启用禁用命令开发实现示例2、在读者管理的实体中实现接口:IStateEntity;实现步骤启用禁用命令开发实现示例3、在读者管理的界面配置状态属性,并设置为只读,可以给状态设置一个默认值,如下我们设置为启用。说明:读者管理为行内操作,所以我们只在ConfigListView中设置即可,如果要配置查询条件还需在查询实体中配置属性。实现步骤启用禁用命令开发实现示例4、运行项目,升级数据库(因为加了属性要映射数据库字段);这一步也可以直接写sql语句到数据中执行。实现步骤启用禁用命令开发实现示例5、完成上述操作后,效果如下:按业务需求的要求去操作按钮,可用满足要求。实现步骤03重写命令通用介绍重写命令通用介绍重写命令必须要放在Commands文件夹下才会执行,命名规范:命令文件以Command结尾。重写命令通用介绍注意:

与命令无关的js文件不能放到Commands文件夹下,否则会出现界面空白的情况。重写命令通用介绍重写的命令必须要写meta,且meta不能换行;重写命令通用介绍说明:1、text:命令的名称设置; 2、group:为命令的分类,值包括edit和business; 3、iconCls:命令图标和图标颜色的设置; 4、hierarchy:命令的分组设置; 5、tooltip:命令的详细信息展示。重写命令通用介绍如果只需要处理前端的业务,只需要添加js文件即可,且js文件要嵌入到资源重写命令通用介绍注意:

保存命令和表单的删除命令,不管有没有处理后台逻辑,都必须有后台CS的命令文件。重写命令通用介绍前端js命令的使用:View.UseCommands("SIE.Web.Demo.Items.Commands.ItemCategoryCommand");其中SIE.Web.Demo.Items.Commands.ItemCategoryCommand为js命令文件的全命名空间。重写命令通用介绍重写命令通用介绍如果命令有后台业务逻辑处理,则需要与JS文件名称相同的CS文件重写命令通用介绍注意:这里的相同,是指命令的js和cs文件的命名空间和名称都必须一致,如下:重写命令通用介绍有后端cs的命令文件,使用命令后面要加FullName,使用实例:View.UseCommands(typeof(CS命令文件的类名).FullName);重写命令通用介绍重写命令通用介绍命令的图标可以在图标库中查找;重写命令通用介绍重写命令通用介绍定义命令的名称空间,不能包含空格,否则会报错;命令防抖的设置:executeIntervalSecond:3,//间隔,单位为秒executeIntervalMode:SIE.cmd.IntervalMode.Debounce.value;在前端js命令使用时,会使用this.callParent(arguments),继承该方法对应的父类的所有逻辑。重写命令通用介绍思考题重写的前端js命令,运行项目报找不到资源文件可能的原因是?Js命令文件的生成操作未设置成嵌入的资源。练习1、SMOM开发中,使用框架封装的启用禁用命令,使用框架封装的启用禁用命令,实体必须实现接口。()2、SMOM-BS开发中,命令的图标和颜色是在命令的js文件中meta对象的()元素进行设置的?3、重写的命令文件可以不包含在Commands文件夹下也能正常执行。4、表单编辑使用默认命令组合,可以先使用使用默认命令组合View.UseDefaultCommands()再使用编辑模式View.FormEdit()。IStateEntityiconCls错错本章小结本章主要讲解了工业管理软件平台命令的基本介绍,包括:平台实现的默认命令的使用;启用禁用命令的开发实现;重写命令使用通用介绍。这节课程是命令的基础课程,学员必须花时间掌握,为后面命令的重写做基础。THANKYOU深圳市信息职业技术学院3.5命令的使用深圳市信息职业技术学院——添加修改命令目

录平台添加命令介绍01自定义添加命令使用示例02平台修改命令介绍03自定义修改命令使用示例04知识回顾平台默认命令的使用;平台启用禁用命令的使用;重写命令通用介绍;学习目标通过本节学习可以:掌握平台添加命令常用的方法及方法的实现逻辑。掌握添加命令的重写;掌握平台修改命令常用的方法及方法的实现逻辑;掌握修改命令的重写。01平台添加命令介绍平台添加命令介绍平台添加命令介绍添加命令框架是在SIE.cmd.Add中实现的。重写添加命令需要继承SIE.cmd.Add对相应方法进行重写。框架添加命令默认的实现逻辑是只处理了前端逻辑,自定义添加命令除非自己处理的业务逻辑需要请求后端数据,才需要后端CS命令文件,否则只处理前端部分即可。重写添加命令的定义SIE.defineCommand('SIE.Web.LibMan.ReaderCats.Commands.AddReaderCatCommand',{extend:'SIE.cmd.Add',meta:{text:"添加",group:"edit",iconCls:"icon-AddEntityicon-green"},});其中:SIE.defineCommand为命令的定义;‘SIE.Web.LibMan.ReaderCats.Commands.AddReaderCatCommand‘为命令的命名空间;extend:继承,这里是继承了框架的添加命令SIE.cmd.Add;meta:命令文本,编辑模式(添加命令的编辑模式为edit),图标和图标颜色的设置。列表添加命令可重写的方法列表添加命令可重写的方法canExecute:function(view){} 是否可执行操作方法,用于控制命令是否可操作,返回值为true或者是false。为true添加命令可以点击,为false添加命令置灰不允许点击,该方法列表每个单元格数据的变更都会执行进来,所有不建议在该方法中去处理后端数据库的逻辑;execute:function(view,source){} 执行方法,即点击添加按钮要实现逻辑的处理,该方法是添加命令执行的入口,继承的添加命令,不清楚框架的执行逻辑不建议重写该方法;getEditEntity:function(){} 获取当前操作实体,该方法基本使用框架默认的逻辑就能满足业务需求,不需要重写;createNewItem:function(){} 创建新的一行,使用框架的方法就能满足要求,不需要重写;onItemCreated:function(entity){} 实体创建后方法,该方法可以进行默认值的设置及属性变更事件的注册。列表添加命令重写较多的方法为canExecute和onItemCreated。表单添加命令可重写的方法表单添加命令可重写的方法canExecute:function(view){} 是否可执行操作,用于控制命令是否可操作,返回值为true或者是false;execute:function(view,source){} 执行方法,即点击添加按钮要实现逻辑的处理,该方法是添加命令执行的入口,继承的添加命令,不清楚框架的执行逻辑不建议重写该方法;getEditEntity:function(){} 获取当前操作实体,使用框架默认实现逻辑就能满足要求,不需要重写;showView:function(editEntity){} 弹出界面,用于控制弹出界面的样式,布局,传值等,如启用的是表单编辑模式且是主表的添加命令,框架默认打开的是tab页签;如果是子表的添加命令,框架默认打开的是dialog对话框;表单添加命令可重写的方法表单添加命令可重写的方法addPage:function(opt){} 打开tab页签的处理方式,由showView方法调用,打开dialog对话框不会执行进该方法;getEditViewTitle:function(entity){} 打开界面的标题设置,一般情况下使用默认的就可满足要求;confirm:function(m,isImmediate,isCopy){} 弹出dialog对话框,点击确定按钮的处理逻辑,由showView方法调用,如果打开的是tab页签,该方法不会执行进来;表单添加命令重写的较多的方法为canExecute和showView。扩展添加命令框架实现源码参考,这部分内容可以在浏览器调试中进行查看。添加命令框架源码思考题前面图书小类中,如果图书大类的图书状态为不在馆,则添加按钮置灰不允许操作是重写添加命令的哪个方法实现的?重写添加命令的canExecute方法。02自定义添加命令使用示例思考题添加命令是如何进行重写的?列表添加命令重写示例示例功能描述:读者分类添加时,读者分类的可借书数量默认设置为10,可借书天数默认设置为60,可修改。开发步骤: 1、在界面端工程读者分类文件夹内添加Commands文件夹;列表添加命令重写示例列表添加命令重写示例2、在Commands文件夹内添加js文件,命名以Command结尾,命名规范:以命令的类型(Add)+实体类名(ReaderCat)+Command;列表添加命令重写示例列表添加命令重写示例3、选中AddReaderCatCommand.js文件,右键”属性”,跳转到的属性设置界面中,将”生成操作”设置为”嵌入的资源”;列表添加命令重写示例列表添加命令重写示例4、定义命令,继承添加命令的基类,重写onItemCreated的方法,在方法中实现可借书数量和可借书天数的值的设置,如下:SIE.defineCommand('SIE.Web.LibMan.ReaderCats.Commands.AddReaderCatCommand',{extend:'SIE.cmd.Add',meta:{text:"添加",group:"edit",iconCls:"icon-AddEntityicon-green"},onItemCreated:function(entity){entity.setQty(10);entity.setDay(60);

}});其中:entity为onItemCreated传入的参数,entity.setQty(10)为给可借书数量设置默认值为10,Qty为实体定义的属性名,entity.set为设置值的固定写法;entity.setDay(60)为给可借书天数设置默认值60。扩展:entity.get属性名()为获取属性的值。列表添加命令重写示例列表添加命令重写示例5、在界面使用命令,将框架的命令替换成自定义的命令文件;列表添加命令重写示例列表添加命令重写示例6、效果;列表添加命令重写示例思考题前面读者管理功能的添加命令,以弹出对话框实现,两列显示,第二列显示为图片应该如何实现?分析:读者管理是主实体,使用框架默认的添加命令打开的是tab页签,这里要求打开对话框,实现上面的需求,需要重写添加命令的showView方法。表单添加命令重写示例开发步骤: 1、在界面端工程读者管理文件夹内添加Commands文件夹(如果已经存在文件夹,该步骤可以忽略);表单添加命令重写示例表单添加命令重写示例2、在Commands文件夹内添加js文件,命名以Command结尾,命名规范:以命令的类型(Add)+实体类名(ReaderMan)+Command;表单添加命令重写示例表单添加命令重写示例3、选中AddReaderManCommand.js文件,右键”属性”,跳转到的属性设置界面中,将”生成操作”设置为”嵌入的资源”。表单添加命令重写示例表单添加命令重写示例4、定义命令,继承添加命令的基类,重写showView的方法,如下:表单添加命令重写示例表单添加命令重写示例框架源码showView方法的实现:showView:function(editEntity){varme=this;if(this.view.getParent()){if(!this.viewMeta){SIE.AutoUI.getMeta({async:false,isDetail:true,ignoreQuery:true,model:this.view.model,callback:function(meta){meta.token=me.view.token;me.viewMeta=meta;}});}表单添加命令重写示例SIE.AutoUI.getMeta为获取元数据;asyn是否异步,通常设置为false;isDetail表单展示,固定值设置为true;ignoreQuery是否忽略查询,这里固定设置为true;model:获取当前界面的操作实体viewGroup:默认值为DetailsView,不更改分组该属性不用配置;callback:请求后的回调函数,在回调函数中设置票据用于控制权限,设置元数据。判断是否存在父,如果存在则执行的是打开dialog的逻辑,如果不存在则执行的是打开tab页签的逻辑。表单添加命令重写示例框架源码showView方法的实现:varcfg={associateCmd:me,viewMeta:me.viewMeta,entity:editEntity,editMode:this.view.editMode,title:this.getEditViewTitle(editEntity),confirm:function(isNoSave){//弹窗的确认后回调

varisImmediate=me.view.isImmediate();me.view.afterEdit(editEntity,isImmediate,me.isCopy);me.confirm(editEntity,isImmediate,me.isCopy);}};//子视图弹框显示

me.setDialogAttribute表单添加命令重写示例弹出对话框的界面参数配置。视图命令参数配置视图元数据实体界面编辑模式弹出对话框标题设置确定按钮执行逻辑函数是否立即保存调用编辑后和确定方法执行按钮的操作逻辑,为立即保存则会操作数据库存储数据并做对应的后端验证,否则只是往表格插入一笔数据,不执行保存操作。表单添加命令重写示例框架源码showView方法的实现://设置弹窗属性

vardialogcfg={};dialogcfg=me.setDialogAttribute(dialogcfg);cfg.dialogcfg=dialogcfg;me._editingView=SIE.App.showDialog(cfg);}else{me.addPage({entityType:this.view.model,recordId:editEntity.getId(),title:this.getEditViewTitle(editEntity),isDetail:true,isNew:this.isNew});}},表单添加命令重写示例参数配置好后,调用框架的弹出对话框的方法,进行界面呈现。addPage:打开tab页签;entityType:获取当前界面的操作实体viewGroup:默认值为DetailsView,不更改分组该属性不用配置;tabId:当前页签的id,默认不需要配置;recordId:当前数据的id;title:当前页签的标题设置;isDetail表单展示,固定值设置为true;isNew:是否添加,添加命令获取的值为true。表单添加命令重写示例5、在界面使用命令,将框架的命令替换成自定义的命令文件,且要设置为表单编辑模式View.FormEdit();表单添加命令重写示例表单添加命令重写示例6、在添加命令中设置了分组,在界面要配置分组对应的界面配置信息;表单添加命令重写示例表单添加命令重写示例7、效果。表单添加命令重写示例03平台修改命令介绍平台修改命令介绍平台修改命令介绍修改命令框架是在SIE.cmd.Edit中实现的。重写修改命令需要继承SIE.cmd.Edit对相应方法进行重写。框架修改命令默认的实现逻辑是只处理了前端逻辑,自定义修改命令除非自己处理的业务逻辑需要请求后端数据,才需要后端CS命令文件,否则只处理前端部分即可。重写修改命令的定义SIE.defineCommand('SIE.Web.LibMan.ReaderCats.Commands.EditReaderCatCommand',{extend:'SIE.cmd.Edit',meta:{text:"修改",group:"edit",iconCls:"icon-EditEntityicon-blue"},});其中:SIE.defineCommand为命令的定义;‘SIE.Web.LibMan.ReaderCats.Commands.EditReaderCatCommand‘为命令的命名空间;extend:继承,这里是继承了框架的修改命令SIE.cmd.Edit;meta:命令文本,编辑模式(修改命令的编辑模式为edit),图标和图标颜色的设置。列表修改命令可重写的方法列表修改命令可重写的方法canExecute:function(view){} 是否可执行操作,用于控制命令是否可操作,返回值为true或者是false;execute:function(view,source){} 执行方法,修改命令执行的入口,继承的修改命令,不建议重写该方法;getEditEntity:function(){} 获取当前操作实体,使用框架默认执行逻辑就能满足要求,不需要重写;onEditting:function(entity){} 编辑前方法,修改方法中注册属性变更事件是在该方法中进行注册;列表修改命令重写较多的方法为canExecute和onEditting。表单修改命令可重写的方法表单修改命令可重写的方法canExecute:function(view){} 是否可执行操作,用于控制命令是否可操作,返回值为true或者是false;execute:function(view,source){} 执行方法,即点击修改按钮要实现逻辑的处理,该方法是修改命令执行的入口,继承的修改命令,不清楚框架的执行逻辑不建议重写该方法;getEditEntity:function(){} 获取当前操作实体,使用框架默认实现逻辑就能满足要求,不需要重写;showView:function(editEntity){} 弹出界面,用于控制弹出界面的样式,布局,传值等,如启用的是表单编辑模式且是主表的修改命令,框架默认打开的是tab页签;如果是子表的修改命令,框架默认打开的是dialog对话框;表单修改命令可重写的方法表单修改命令可重写的方法addPage:function(opt){} 打开tab页签的处理方式,由showView方法调用,打开dialog对话框不会执行进该方法;getEditViewTitle:function(entity){} 打开界面的标题设置,一般情况下使用默认的就可满足要求;confirm:function(m,isImmediate,isCopy){} 弹出dialog对话框,点击确定按钮的处理逻辑,由showView方法调用,如果打开的是tab页签,该方法不会执行进来;表单修改命令重写的较多的方法为canExecute和showView。扩展修改命令框架实现源码参考,这部分内容可以在浏览器调试中进行查看。修改命令框架源码思考题添加修改命令有哪些异同点?04自定义修改命令使用示例思考题读者管理修改时,只有状态为禁用的才允许修改,应该如何进行开发实现?列表修改命令重写示例开发步骤: 1、在界面端工程读者管理文件夹内添加Commands文件夹(已有Commands文件夹的该步骤忽略);列表修改命令重写示例列表修改命令重写示例2、在Commands文件夹内添加js文件,命名以Command结尾,命名规范:以命令的类型(Edit)+实体类名(ReaderMan)+Command;列表修改命令重写示例列表修改命令重写示例3、选中EditReaderManCommand.js文件,右键”属性”,跳转到的属性设置界面中,将”生成操作”设置为”嵌入的资源”;列表修改命令重写示例列表修改命令重写示例4、定义命令,继承修改命令的基类,重写canExecute的方法,在方法中控制操作逻辑,如下:列表修改命令重写示例this.callParent(arguments)为调用父类canExecute方法的逻辑;entity=view.getCurrent()为获取当前行操作数据;entity.getState()为获取状态的属性值,根据属性的值去控制修改按钮是否置灰。列表修改命令重写示例5、在界面使用命令,将框架的修改命令替换成我们定义的修改命令;列表修改命令重写示例列表修改命令重写示例6、效果列表修改命令重写示例表单修改命令重写示例功能描述:读者管理功能更改修改命令的标题,修改成如下图所示.标题将对应的id,读者编号和姓名带出。表单修改命令重写示例思考题上一页ppt中的需求描述应该如何实现?重写修改命令的获取编辑视图的标题方法getEditViewTitle,并且界面的编辑模式要设置为表单编辑模式,这里的实现可以在上一个修改示例的基础上添加getEditViewTitle实现该示例的逻辑即可。表单修改命令重写示例拷贝框架的getEditViewTitle方法来修改成自己的逻辑。表单修改命令重写示例在框架实现逻辑的基础上增加了获取读者编号和姓名的值,将获取的值拼接到了返回值中。表单修改命令重写示例效果表单修改命令重写示例练习1、以下关于添加命令说法正确的是()A:自定义添加命令都必须要继承SIE.cmd.Add;B:使用框架的添加命令,不管是行内或者是表单编辑,实现的逻辑是一样的。C:自定义添加命令如果重写了执行方法execute,在执行方法中只处理了功能的业务逻辑,没有调用父类执行方法的逻辑,则添加命令除了是否可执行方法能执行进去,其他方法都不能执行。D:主表表单编辑,未重写添加命令,会进入到confirm方法的逻辑。2、

以下关于修改命令的说法错误的是()A:控制修改命令是否可执行操作的逻辑是在CanExecute方法中进行实现的;B:在修改命令中注册属性变更事件是在OnItemCreated方法中进行注册的;C:框架子列表的编辑模式为表单编辑,修改命令默认是打开的对话框方式;D:表单编辑模式,重写的修改命令要更改页面的布局呈现,可以在Execute方法中实现。CB本章小结本章主要讲解了工业管理软件添加和修改命令的使用,包括:平台添加命令介绍;自定义添加命令开发示例;平台修改命令介绍;自定义修改命令开发示例。通过本章的学习能够根据业务需求判断添加修改命令是否需要重写,如果需要重写要清楚如何进行重写,重写哪个或者哪些方法能满足业务需求。THANKYOU深圳市信息职业技术学院3.5命令的使用深圳市信息职业技术学院——删除命令目

录平台删除命令介绍01自定义删除命令开发示例02自定义删除命令注意事项03知识回顾平台添加命令介绍自定义添加命令使用示例平台修改命令介绍自定义修改命令使用示例学习目标通过本节学习可以:掌握平台删除命令的实现逻辑;掌握删除命令的重写;了解自定义删除命令的注意事项。01平台删除命令介绍平台删除命令介绍平台删除命令介绍删除命令框架是在SIE.cmd.Delete中实现的。重写添加命令需要继承SIE.cmd.Delete对相应方法进行重写。框架删除命令实现的方法只有canExecute和execute,项目上重写canExecute方法的场景较多。重写删除命令的定义SIE.defineCommand('SIE.Web.LibMan.ReaderCats.Commands.DeleteReaderCatCommand',{extend:'SIE.cmd.Delete’,meta:{text:"删除",group:"edit",iconCls:"icon-DeleteEntityicon-red"},});其中:SIE.defineCommand为命令的定义;extend:继承,继承框架的删除命令SIE.cmd.Delete;meta:text为命令文本,group为编辑模式(设置为edit),iconCls为图标和图标颜色的设置。删除命令前端实现删除命令前端实现SIE.defineCommand('SIE.cmd.Delete',{meta:{text:"删除",group:"edit",iconCls:"icon-DeleteEntityicon-red"},selectedItems:[],isImmediate:false,canExecute:function(view){if(view.isListView){if(view.hasSelectedEntities()){returntrue;}returnfalse;}varentity=view.getCurrent();returnentity!=null;},_viewReload:function(view){varpv=view.getParent();//判断childif(pv){view.loadChildData(true);}else{view.reloadData();}},全局变量选择的行,默认为空全局变量,是否立即保存,默认为false是否可执行操作,删除按钮在列表上的执行逻辑:存在选择的数据则允许删除操作,否则删除按钮不可操作。是否可执行操作,删除按钮在表单上的执行逻辑:当前操作行不为null则允许删除操作,否则删除按钮不可操作。判断是否存在父,存在说明是子为子,则加载子列表的数据。为父,则加载当前列表的数据。删除命令前端实现删除命令前端实现execute:function(view){varme=this;if(view.isListView){varisImmediate=view.isImmediate();varmsg=Ext.String.format('你确定删除选择的{0}条数据吗?'.L10N(),view.getSelection().length);if(isImmediate)msg+="确定后将直接删除!".L10N();elsemsg+="删除后,需要再次点击保存!".L10N();}else{//formview}}//cmdend});删除按钮在列表上的的执行逻辑。删除按钮在表单上,框架未实现其逻辑,项目上也基本没有遇到到在表单上使用删除按钮的场景。删除按钮执行方法的操作逻辑获取是否立即保存的值,为表单编辑模式则为true,否则为false根据判断是否立即保存,拼接提示信息的内容删除命令前端实现删除命令前端实现SIE.Msg.askQuestion(msg,function(){if(isImmediate){view.removeSelection();varchildren=view.getChildren();varwithChildren=children.length>0;varstore=view.getData();view.execute({withChildren:withChildren,success:function(res){mitChanges();me._viewReload(view);view.setCurrent(null,true);},error:function(res){store.rejectChanges();}});}});表单编辑模式删除按钮执行的逻辑移除选择的行获取子获取子的数量获取当前视图的数据view.execute为向后端请求数据,存在子将子一起传到后端去处理保存操作的逻辑。后面请求成功后的回调操作,设置变更后的数据,处理加载数据的逻辑,设置当前操作行为null。请求后端数据失败,则回退前端移除选择行的操作。删除命令前端实现删除命令前端实现SIE.Msg.askQuestion(msg,function(){else{view.removeSelection();vardata=view.getData().data;if(data.length>0){//不选中一行,列表的tbar(如果命令过多)会变更位置

view.getControl().setSelection(data.items[0]);view.setCurrent(data.items[0],true);}else{view.setCurrent(null,true);}}});行内编辑模式删除按钮执行的逻辑移除选择的行获取数据行判断表格是否存在数据设置第0行为选择行,并将第一行设置为当前操作行。表格不存在数据,设置当前操作行为null。删除命令后端实现删除命令后端实现删除命令平台默认只有设置为表单编辑模式,操作删除按钮才会走后端逻辑。

public

class

DeleteCommand:ListViewCommand

{

public

const

stringCommandName="SIE.cmd.Delete";

protected

override

objectExcute(ViewArgsargs,stringscope)

{EntityListdeserializeData=GetDeserializeData(args,scope);OnSaving(deserializeData);DoSave(deserializeData);OnSaved(deserializeData);

return

true;

}

}前端view.execute执行进来的逻辑获取反序列化数据空方法,有保存前要执行的逻辑可以在该方法实现执行保存逻辑空方法,保存后要处理的逻辑可以在该方法实现思考题平台删除按钮,在表单页面使用删除按钮,删除的逻辑平台是否有实现?思考题SMOM命令中前端向后端请求数据是如何实现的?02自定义删除命令开发示例思考题读者管理删除逻辑控制,为启用状态时不允许删除,编辑模式为行内编辑,如何实现?自定义删除命令行内编辑开发示例在界面端Commands文件夹下添加js文件,属性生成操作设置为嵌入的资源。实现步骤自定义删除命令行内编辑开发示例命令继承SIE.cmd.Delete,重写canExecute方法,在canExecute中实现逻辑。SIE.defineCommand('SIE.Web.XyTest.ReaderMans.Commands.DeleteReaderManCommand',{extend:'SIE.cmd.Delete',meta:{text:"删除",group:"edit",iconCls:"icon-DeleteEntityicon-red"},canExecute:function(view){varresult=this.callParent(arguments);if(result===false)returnfalse;varentity=view.getCurrent();if(entity!=null&&entity.getState()==1)returnfalse;returntrue;

},});实现步骤自定义删除命令行内编辑开发示例在界面端使用命令及效果,状态为禁用点击删除按钮,可以正常删除数据。实现步骤思考题读者管理删除逻辑控制,为启用状态时不允许删除,编辑模式为表单编辑,如何实现?自定义删除命令表单编辑开发示例在界面端Commands文件夹下添加js文件,属性设置为嵌入的资源。实现步骤自定义删除命令表单编辑开发示例命令继承SIE.cmd.Delete,重写canExecute方法,在canExecute中实现逻辑。SIE.defineCommand('SIE.Web.XyTest.ReaderMans.Commands.DeleteReaderManCommand',{extend:'SIE.cmd.Delete',meta:{text:"删除",group:"edit",iconCls:"icon-DeleteEntityicon-red"},canExecute:function(view){varresult=this.callParent(arguments);if(result===false)returnfalse;varentity=view.getCurrent();if(entity!=null&&entity.getState()==1)returnfalse;returntrue;

},});实现步骤自定义删除命令表单编辑开发示例添加删除命令的CS文件,命名空间与js命令命名空间完全一致,继承DeleteCommand。实现步骤自定义删除命令表单编辑开发示例界面端启用表单编辑模式,使用命令和效果,状态为禁用点击删除按钮,可以正常删除数据。实现步骤03自定义删除命令注意事项自定义删除命令注意事项删除命令无必要尽量不要去重写execute方法;编辑模式为表单编辑模式,即设置为View.FormEdit();重写的删除命令,必须要有后台cs文件(后台cs命令文件继承DeleteCommand),否则删除会报找不到命令的异常。自定义删除命令注意事项练习1、SMOM-BS开发中,重写删除按钮,通常情况下前端继承(),后端继承()。2、前端js加载列表的数据是通过调用()方法实现的,强制加载子列表的数据又是通过调用()方法实现的?3、前端js移除选择的行是通过()进行实现的?4、前端确认提示信息是通过()进行设置的?SIE.cmd.Delete,DeleteCommandview.reloadData(),view.loadChildData(true)view.removeSelection()SIE.Msg.askQuestion(msg,function(){})本章小结本章主要讲解了工业管理软件删除命令的使用,包括:平台删除命令的实现逻辑介绍;自定义删除命令的开发示例;自定义删除命令的注意事项。通过本章的学习学员能够根据业务需求判断删除命令是否需要重写,如果需要重写要清楚如何进行重写,或者如何重写能满足业务需求。THANKYOU深圳市信息职业技术学院3.5命令的使用深圳市信息职业技术学院——保存命令列表保存命令框架实现介绍01目

录列表保存命令开发示例02表单保存命令框架实现介绍03表单保存命令开发示例04保存命令注意事项05知识回顾平台删除命令实现介绍;自定义删除命令开发示例;自定义删除命令注意事项;学习目标通过本节学习可以:掌握列表保存命令的重写;掌握表单保存命令的重写;掌握保存命令有哪些注意事项;了解列表保存命令平台的实现逻辑;了解表单保存命令平台的实现逻辑。01列表保存命令框架实现介绍平台列表保存命令实现逻辑介绍平台列表保存命令实现逻辑介绍列表保存命令前端部分在SIE.cmd.Save中实现的,后端保存逻辑在SaveCommand中实现的。重写的列表保存命令,即使不处理后端逻辑,也必须添加后端CS命令文件,否则点击重写的保存命令会报错。列表保存命令的命名规范:ListSave+实体名+Command;重写保存命令的定义SIE.defineCommand('SIE.Web.LibMan.ReaderMans.Commands.ListSaveReaderCommand',{extend:'SIE.cmd.Save',meta:{text:"保存",group:"edit",iconCls:"icon-SaveEntityicon-blue"},});后端CS命令,前端和后端的全命名空间要完全一致。public

class

ListSaveReaderCommand:SaveCommand{}列表保存命令前端可重写的方法列表保存命令前端可重写的方法canExecute:function(view){}:是否可执行方法,返回值为true或false;execute:function(view,source){}:执行方法,命令执行的入口,不建议重写;onValidation:function(view){}:验证方法,处理前端验证,框架统一实现,通常不需要重写;onSaving:function(view){}:保存数据前的处理,调用了验证的方法,通常不需要重写;doSave:function(view){}:执行保存操作的逻辑,会向后端请求数据;onSaved:function(view,res){}:视图数据提交保存后回调处理;onSavedMsg:function(view,res){}:保存后的提示信息平台保存命令前端方法实现逻辑介绍方法实现逻辑介绍canExecute:function(view){} 保存按钮是否可执行,返回值为true或者是false。canExecute:function(view){if(view.isListView){varresult=false;varpv=view.getParent();//判断childif(pv){varcurrent=pv.getCurrent();if(current){if(!current.isNew()){result=_canExecute(view);}}}else{result=view.getData().isDirty();if(view.getCurrent()){for(vari=0;i<view.getData().data.items.length;i++){varisresult=view.getData().data.items[i].isDirty();if(isresult){result=true;break;}}}}returnresult;}returnthis.callParent(arguments);},var_canExecute=function(view){varresult;if(view.editMode===SIE.viewMeta.editMode.FORM){varcurrent=view.getCurrent();if(current){result=current.isChildrenDirty();}}else{result=view.getData().isDirty();}returnresult;};_canExecute私有方法的逻辑:编辑模式为表单模式,返回值为子是否为脏;编辑模式为行内:返回值为当前视图的数据是否为脏。为子,父的当前操作行存在,且不是新增,是否允许执行为_canExecute的逻辑。不为子,获取的视图数据只要有一行数据为脏,则保存按钮允许操作。平台保存命令前端方法实现逻辑介绍execute:function(view,source){} 执行方法execute:function(view,source){varme=this;if(this.isExecuting==true)return;this.isExecuting=true;setTimeout(function(){me.isExecuting=false;},100,me);varisValid=this.onSaving(view);if(isValid)this.doSave(view);}onSaving:function(view){returnthis.onValidation(view);},onValidation:function(view){returnview.validateData();},处理框架的前端验证前端验证校验通过,调用doSave的方法,去处理执行的逻辑。方法实现逻辑介绍平台保存命令前端方法实现逻辑介绍doSave执行保存逻辑和onSaved保存后逻辑的方法。 doSave:function(view){varme=this;varchildren=view.getChildren();varwithChildren=children.length>0;view.execute({withChildren:withChildren,success:function(res){me.onSaved(view,res);}});}, onSaved:function(view,res){varme=this;varoperationView=view;if(view.associateCmd){operationView=view.associateCmd.view;}_viewReload(operationView);me.onSavedMsg(view,res);},通过view.execute向后端请求数据,执行保存数据的逻辑,在请求成功的方法中,调用onSaved方法处理保存后的逻辑。保存成功后重新加载列表的数据,并提示保存成功的消息。方法实现逻辑介绍平台保存命令前端方法实现逻辑介绍_viewReload加载列表的私有方法和onSaveMsg消息提示方法/***private私有方法,列表加载数据*@param{SIE.view.ListView}view-视图对象*/var_viewReload=function(view){if(view.isListView){view.reloadData();}}; /***@protectedvirtualvoid*保存后的提示信息*@param{type}view*@param{type}res*/onSavedMsg:function(view,res){SIE.Msg.showInstantMessage('保存成功'.t());},重新加载表格的数据。倒计时提示保存成功的的消息。方法实现逻辑介绍列表保存命令后端可重写的方法列表保存命令后端可重写的方法Excute:执行方法,不建议重写;OnSaving:保存前方法,框架预留的一个空方法,用于处理保存前的逻辑;DoSave:执行保存的逻辑,传入的参数是前端操作过变更的数据;OnSaved:保存后方法,框架预留的一个空方法,用于处理保存后的业务逻辑;平台保存命令后端方法实现逻辑介绍public

class

SaveCommand:ListViewCommand

{

//命令名

public

const

stringCommandName="SIE.cmd.Save"; //执行方法 protected

override

objectExcute(ViewArgsargs,stringscope)

{EntityListdeserializeData=GetDeserializeData(args,scope);OnSaving(deserializeData);DoSave(deserializeData);OnSaved(deserializeData);

returndeserializeData;

}

//保存前动作

protected

virtual

voidOnSaving(EntityListdata)

{

}

//进行保存 protected

virtual

voidDoSave(EntityListdata)

{RepositoryFactory.Save(data);data.MarkSaved();

} //保存后动作 protected

virtual

voidOnSaved(EntityListdata)

{

}

}方法实现逻辑介绍后端执行方法,获取反序列化之后的数据,调用保存前、保存中和保存后方法。执行保存操作,如果有验证和提交事件的处理,会同步进行处理。标记数据为未修改的状态。思考题在前端命令中定义私有方法是如何进行定义的?SIE.defineCommand('SIE.cmd.Save',function(){/***private私有方法,列表加载数据*@param{SIE.view.ListView}view-视图对象*/var_canExecute=function(view){ };return{meta:{text:"保存",group:"edit",iconCls:"icon-SaveEntityicon-blue"},02列表保存命令开发示例思考题读者管理功能设置为行内操作,重写保存命令,保存逻辑为:读者管理数据保存成功后,关联的读者分类的可借书数量加1?从需求分析可以看出,该业务只有后端处理逻辑,所以前端方法不需要重写。列表保存命令重写示例1、添加命令的js文件,继承SIE.cmd.Save,js文件的生成操作设置为嵌入的资源;SIE.defineCommand('SIE.Web.XyTest.ReaderMans.Commands.ListSaveReaderCommand',{extend:'SIE.cmd.Save',meta:{text:"保存",group:"edit",iconCls:"icon-SaveEntityicon-blue"},});开发步骤列表保存命令重写示例2、在控制器中实现读者分类可借书数量加1的逻辑;开发步骤列表保存命令重写示例3、添加保存命令的CS文件,继承SaveCommand,重写保存后方法OnSaved,在保存后方法中处理参数,调用步骤2处理读者分类可借书数量加1逻辑的方法;开发步骤列表保存命令重写示例4、在界面的ConfigListView方法中使用命令,运行项目操作保存按钮即可看到效果;开发步骤03表单保存命令框架实现介绍平台表单保存命令实现逻辑介绍平台表单保存命令实现逻辑介绍表单保存命令前端部分在SIE.cmd.FormSave中实现的,后端保存逻辑在FormSaveCommand中实现的。重写的表单保存命令,即使不处理后端逻辑,也必须添加后端CS命令文件,否则点击重写的保存命令会报错。表单保存命令的命名规范:FormSave+实体名+Command;重写表单保存命令的定义SIE.defineCommand('SIE.Web.LibMan.ReaderMans.Commands.FormSaveReaderCommand',{ extend:'SIE.cmd.FormSave',meta:{text:"保存",group:"edit",iconCls:"icon-SaveEntityicon-blue"},});后端CS命令,前端和后端的全命名空间要完全一致。public

class

ListSaveReaderCommand:FormSaveCommand{}表单保存命令前端可重写的方法表单保存命令前端可重写的方法canExecute:function(view){}:是否可执行方法,返回值为true或false;execute:function(view,source){}:执行方法,命令执行的入口,不建议重写;onValidation:function(view){}:验证方法,处理前端验证,框架统一实现,通常不需要重写;onSaving:function(view){}:保存数据前的处理,调用了验证的方法,通常不需要重写;doSave:function(view){}:执行保存操作的逻辑,会向后端请求数据;onSaved:function(view,res){}:视图数据提交保存后回调处理;onSavedMsg:function(view,res){}:保存后的提示信息平台保存命令前端方法实现逻辑介绍方法实现逻辑介绍canExecute:function(view){} 保存按钮是否可执行,返回值为true或者是false。

canExecute:function(view){if(view.isDetailView){varresult=false;varcurrent=view.getCurrent();if(current){result=current.isDirty();}returnresult;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论