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對相應方法進行重寫??蚣芴砑用钅J的實現邏輯是只處理了前端邏輯,自定義添加命令除非自己處理的業務邏輯需要請求后端數據,才需要后端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對相應方法進行重寫??蚣苄薷拿钅J的實現邏輯是只處理了前端邏輯,自定義修改命令除非自己處理的業務邏輯需要請求后端數據,才需要后端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對相應方法進行重寫??蚣軇h除命令實現的方法只有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

提交評論