MES開(kāi)發(fā)與應(yīng)用 課件 3.4.4-3.4.5 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-實(shí)體和界面配置Api;3.4.7 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-平臺(tái)編輯器使用介紹_第1頁(yè)
MES開(kāi)發(fā)與應(yīng)用 課件 3.4.4-3.4.5 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-實(shí)體和界面配置Api;3.4.7 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-平臺(tái)編輯器使用介紹_第2頁(yè)
MES開(kāi)發(fā)與應(yīng)用 課件 3.4.4-3.4.5 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-實(shí)體和界面配置Api;3.4.7 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-平臺(tái)編輯器使用介紹_第3頁(yè)
MES開(kāi)發(fā)與應(yīng)用 課件 3.4.4-3.4.5 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-實(shí)體和界面配置Api;3.4.7 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-平臺(tái)編輯器使用介紹_第4頁(yè)
MES開(kāi)發(fā)與應(yīng)用 課件 3.4.4-3.4.5 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-實(shí)體和界面配置Api;3.4.7 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-平臺(tái)通配置-平臺(tái)編輯器使用介紹_第5頁(yè)
已閱讀5頁(yè),還剩97頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

3.4平臺(tái)通用配置深圳市信息職業(yè)技術(shù)學(xué)院——實(shí)體和界面配置Api實(shí)體屬性實(shí)體屬性特性實(shí)體特性實(shí)體配置實(shí)體介紹視圖介紹視圖配置視圖屬性配置知識(shí)擴(kuò)展知識(shí)回顧控制器實(shí)現(xiàn)介紹;框架分組介紹;自定義分組的實(shí)現(xiàn)方式,三種入口的實(shí)現(xiàn)方式;自定義分組三種實(shí)現(xiàn)方式的實(shí)現(xiàn)示例;自定義分組的注意事項(xiàng);學(xué)習(xí)目標(biāo)通過(guò)本節(jié)學(xué)習(xí)可以:掌握實(shí)體包含的特性、實(shí)體屬性、屬性標(biāo)簽;掌握實(shí)體的配置;掌握界面的方法及使用;掌握界面方法的屬性配置、命令配置、界面呈現(xiàn)配置;了解實(shí)體的組成;了解界面的組成。01實(shí)體介紹思考題平臺(tái)框架定義的實(shí)體通用屬性包括哪些?實(shí)體介紹實(shí)體介紹1、實(shí)體通常會(huì)映射數(shù)據(jù)庫(kù),所有新建實(shí)體類要建在服務(wù)端工程;2、實(shí)體類必須包含在對(duì)應(yīng)文件夾下;文件夾以“實(shí)體名+S”進(jìn)行命名;3、實(shí)體一定要包含命名空間,且命名空間要規(guī)范,一般為“對(duì)應(yīng)工程名+文件夾名”;4、實(shí)體一般定義為部分類,直接或間接繼承DataEntity;5、實(shí)體類繼承的父實(shí)體盡量不要包含子列表屬性,如果包含,子實(shí)體又沒(méi)有用new關(guān)鍵字覆蓋父實(shí)體屬性,BS生成界面會(huì)報(bào)錯(cuò);6、實(shí)體類中盡量只包含對(duì)應(yīng)的屬性,盡量不要去寫(xiě)與業(yè)務(wù)邏輯相關(guān)的代碼;實(shí)體介紹實(shí)體介紹7、實(shí)體屬性包含一般屬性、引用屬性、列表屬性、只讀屬性和視圖屬性;默認(rèn)情況下一般屬性和引用屬性會(huì)映射生成數(shù)據(jù)庫(kù)表字段,其他的屬性不會(huì)。8、創(chuàng)建實(shí)體的屬性,我們只建業(yè)務(wù)相關(guān)的屬性,業(yè)務(wù)屬性不要和框架屬性命名沖突,框架定義的屬性包括:Id,CreateBy,CreateDate,InvOrgId,IsPhantom,SyncId,UpdateBy,UpdateDate;框架屬性對(duì)應(yīng)數(shù)據(jù)庫(kù)表字段如下:9、實(shí)體類中的實(shí)體配置以“類名+Config”進(jìn)行命名;02實(shí)體屬性一般屬性實(shí)體屬性:實(shí)體屬性是通過(guò)托管屬性進(jìn)行注冊(cè)的,托管屬性通過(guò)P<T>.Register()方法進(jìn)行注冊(cè),T為所注冊(cè)的托管屬性的實(shí)體所有者(Owner)。一般屬性:普通類型的屬性#region

分類編碼Code///

<summary>///分類編碼///

</summary>[Label("分類編碼")]public

static

readonlyProperty<string>CodeProperty=P<BigBookCat>.Register(e=>e.Code);///

<summary>///分類編碼///

</summary>public

stringCode{get{returnGetProperty(CodeProperty);}set{SetProperty(CodeProperty,value);}}#endregion一般屬性一般屬性支持的屬性類型:stringbool、bool?int、int?,long,long?double、double?DateTime、DateTime?枚舉類型、Nullable<枚舉類型>Byte[]引用屬性引用屬性:引用類型的屬性,包括引用ID和引用實(shí)體兩個(gè)屬性,必須在同一實(shí)體中成對(duì)定義,屬性類型為double。引用屬性需指定引用類型ReferenceType,一般引用為Normal,子實(shí)體引用父實(shí)體為Parent。#region

讀者管理與讀者分類的關(guān)系ReaderCat[Label("類別號(hào)")]public

static

readonlyIRefIdPropertyReaderCatIdProperty=P<ReaderMan>.RegisterRefId(e=>e.ReaderCatId,ReferenceType.Normal);///

<summary>///讀者管理與讀者分類的關(guān)系Id///

</summary>public

doubleReaderCatId{get{return(double)GetRefId(ReaderCatIdProperty);}set{SetRefId(ReaderCatIdProperty,value);}}///

<summary>///讀者管理與讀者分類的關(guān)系///

</summary>public

static

readonlyRefEntityProperty<ReaderCat>ReaderCatProperty=P<ReaderMan>.RegisterRef(e=>e.ReaderCat,ReaderCatIdProperty);///

<summary>///讀者管理與讀者分類的關(guān)系///

</summary>publicReaderCatReaderCat{get{returnGetRefEntity(ReaderCatProperty);}set{SetRefEntity(ReaderCatProperty,value);}}#endregion引用屬性引用Id引用實(shí)體引用類型,一般外鍵為Normal列表屬性列表屬性:子列表的屬性,一對(duì)多關(guān)系中,父實(shí)體包含子實(shí)體的列表。#region

圖書(shū)大類與小類的關(guān)系SmallBookCatList///

<summary>///圖書(shū)大類與小類的關(guān)系///

</summary>public

static

readonlyListProperty<EntityList<SmallBookCat>>SmallBookCatListProperty=P<BigBookCat>.RegisterList(e=>e.SmallBookCatList);///

<summary>///圖書(shū)大類與小類的關(guān)系///

</summary>publicEntityList<SmallBookCat>SmallBookCatList{get{return

this.GetLazyList(SmallBookCatListProperty);}}#endregion列表屬性只讀屬性只讀屬性:只讀屬性用于表示實(shí)體中的一個(gè)只讀的數(shù)據(jù)。只讀屬性主要為界面展現(xiàn)層設(shè)計(jì)。#region

全名FullName///

<summary>///全名///

</summary>[Label("全名")]public

static

readonlyProperty<string>FullNameProperty=P<BigBookCat>.RegisterReadOnly(e=>e.FullName,e=>e.GetFullName(),CodeProperty,NameProperty);///

<summary>///全名///

</summary>public

stringFullName{ get{return

this.GetProperty(FullNameProperty);}}private

stringGetFullName(){ return

this.Code+"("+this.Name+")";}#endregion只讀屬性視圖屬性視圖屬性:視圖屬性是通過(guò)引用屬性懶加載的數(shù)據(jù),主要為界面展現(xiàn)層設(shè)計(jì)。如果實(shí)體和繼承的父實(shí)體中沒(méi)有引用屬性,則不能使用視圖屬性。#region

類別名稱CatName

///

<summary>

///類別名稱

///

</summary>[Label("類別名稱")]

public

static

readonlyProperty<string>CatNameProperty=P<ReaderMan>.RegisterView(e=>e.CatName,p=>p.ReaderCat.CatName);

///

<summary>

///類別名稱

///

</summary>

public

stringCatName

{

get{return

this.GetProperty(CatNameProperty);}

}

#endregion視圖屬性通過(guò)引用實(shí)體.屬性名加載出來(lái)視圖屬性的內(nèi)容思考題實(shí)體的一般屬性支持哪些類型?03實(shí)體屬性特性實(shí)體屬性特性屬性名稱標(biāo)簽(Label):用于在實(shí)體屬性上聲明屬性的顯示名稱。必填標(biāo)簽(Required):聲明實(shí)體屬性不能為空,字符串類型屬性會(huì)標(biāo)記該特性。非重復(fù)標(biāo)簽(NotDuplicate):聲明實(shí)體屬性不能重復(fù)。最大長(zhǎng)度標(biāo)簽(MaxLength):聲明實(shí)體屬性的最大長(zhǎng)度,字符串類型的屬性會(huì)標(biāo)記該特性。最小長(zhǎng)度標(biāo)簽(MinLength):聲明實(shí)體屬性的最小長(zhǎng)度,字符串類型的屬性會(huì)標(biāo)記該特性。最大值標(biāo)簽(MaxValue):聲明實(shí)體屬性的最大值,數(shù)值類型的屬性會(huì)標(biāo)記該特性。最小值標(biāo)簽(MinValue):聲明實(shí)體屬性的最小值,數(shù)值類型的屬性會(huì)標(biāo)記該特性。屬性默認(rèn)值(DefaultValue):屬性默認(rèn)值設(shè)置,作用域?yàn)楫?dāng)前實(shí)體。實(shí)體屬性特性04實(shí)體特性實(shí)體特性實(shí)體類型特性(RootEntity,ChildEntity,QueryEntity):用于在實(shí)體上聲明實(shí)體的類型。實(shí)體序列化特性(Serializable):用于在實(shí)體上聲明實(shí)體可序列化。實(shí)體名稱特性(Label):用于在實(shí)體上聲明實(shí)體的顯示名稱。實(shí)體成員顯示特性(DisplayMember):用于在實(shí)體上聲明實(shí)體被引用時(shí)顯示哪個(gè)屬性的值,注意顯示的成員必須是普通屬性,且必須是數(shù)據(jù)庫(kù)表中存在字段對(duì)應(yīng)的屬性。實(shí)體通用查詢特性(CriteriaQuery):用于在實(shí)體上聲明實(shí)體的查詢使用通過(guò)查詢條件,CriteriaQuery后面不關(guān)聯(lián)類則使用的是框架標(biāo)準(zhǔn)查詢,關(guān)聯(lián)類即CriteriaQuery(typeof(類)),則查詢自己實(shí)現(xiàn)。實(shí)體特性實(shí)體特性實(shí)體查詢特性(ConditionQueryType):用于在實(shí)體上聲明實(shí)體使用的查詢實(shí)體類型(注意:實(shí)體查詢標(biāo)簽與實(shí)體通用查詢標(biāo)簽只能標(biāo)記其中的一個(gè))。下拉列表查詢條件特性(QueryMembers):用于在實(shí)體上聲明實(shí)體被引用時(shí)下拉列表的查詢條件配置。實(shí)體配置項(xiàng)特性(EntityWithConfig):用于在實(shí)體上聲明實(shí)體通用配置值。單據(jù)打印特性(BillPrintable):用于在實(shí)體上聲明界面單據(jù)打印命令的配置。實(shí)體特性05實(shí)體配置思考題實(shí)體元數(shù)據(jù)配置支持哪些配置?實(shí)體配置實(shí)體配置包括“實(shí)體規(guī)則配置”和“實(shí)體元數(shù)據(jù)配置”。實(shí)體規(guī)則:重寫(xiě)AddValidations方法,這里配置的是標(biāo)準(zhǔn)規(guī)則,標(biāo)準(zhǔn)規(guī)則不能在界面進(jìn)行啟用和禁用操作,代碼編寫(xiě)即生效,建議在項(xiàng)目上如果沒(méi)有特殊的要求可以使用該規(guī)則進(jìn)行實(shí)現(xiàn)(可以減少實(shí)體元數(shù)據(jù)的更新操作)。可以實(shí)現(xiàn)的標(biāo)準(zhǔn)規(guī)則驗(yàn)證:1、非空驗(yàn)證;2、長(zhǎng)度驗(yàn)證;3、最大最小值驗(yàn)證;4、非重復(fù)驗(yàn)證(支持單個(gè)和多個(gè)屬性的非重復(fù)驗(yàn)證);5、正則表達(dá)式的驗(yàn)證;6、實(shí)體驗(yàn)證(HandlerRule),該驗(yàn)證中可以查數(shù)據(jù)庫(kù)進(jìn)行驗(yàn)證操作。實(shí)體配置實(shí)體元數(shù)據(jù)配置實(shí)體元數(shù)據(jù)的配置,可以映射表、映射視圖、映射屬性和實(shí)體插件。映射數(shù)據(jù)庫(kù)表:Meta.MapTable(“RES_EMP_GROUP”);映射視圖1)直接讀取數(shù)據(jù)庫(kù)的視圖:Meta.MapView(“V_RES_EMP_GROUP”);2)通過(guò)sql查詢出來(lái)的視圖:Meta.MapView(“(SELECT*FROMRES_EMP_GROUP)”);3)通過(guò)DB.Query查詢出來(lái)的視圖:

Func<IQuery>view=()=>DB.Query<Enterprise>().Where(p=>p.Level.IsResource==true&&p.InvOrgId==RT.InvOrgId).ToQuery();

Meta.MapView(view);//影射一條IQuery查詢的視圖,注意查詢中不能出現(xiàn)當(dāng)前實(shí)體,否則會(huì)出現(xiàn)死循環(huán)。映射表和視圖實(shí)體元數(shù)據(jù)配置映射實(shí)體中的所有屬性為數(shù)據(jù)庫(kù)表字段:Meta.MapAllProperties();映射指定的屬性及屬性長(zhǎng)度:

Meta.Property(Employee.CodeProperty).MapColumn().HasLength(50);Meta.Property(Employee.CodeProperty).MapColumn().DataTypeLength=“50";排除某些字段不映射數(shù)據(jù)庫(kù)的設(shè)置:

Meta.MapAllPropertiesExcept(Employee.CodeProperty);指定某個(gè)字段不映射數(shù)據(jù)庫(kù):DontMapColumn;

Meta.Property(Employee.CodeProperty).DontMapColumn();建立唯一索引,使用HasIndex。

Meta.Property(Resource.KeyProperty).MapColumn().HasIndex(IndexTypeMeta.UniqueIndexed);建立組合索引:使用IndexGroupOnProperties設(shè)置。

Meta.IndexGroupOnProperties(Resource.CultureIdProperty,Resource.KeyProperty);忽略映射外鍵:IgnoreFK;

Meta.Property(SupplierShipBill.MasterBillIdProperty).ColumnMeta.IgnoreFK();映射屬性實(shí)體元數(shù)據(jù)配置啟用假刪除:Meta.EnablePhantoms();禁用假刪除:Meta.DisablePhantoms();啟用庫(kù)存組織:Meta.EnableInvOrg();

禁用庫(kù)存組織:Meta.DisableInvOrg();啟用實(shí)體排序:Meta.EnableSort();

禁用實(shí)體排序:Meta.DisableSort();啟用樹(shù)形插件:Meta.SupportTree();啟用實(shí)體編輯日志記錄插件:Meta.EnableEntityLog();啟用數(shù)據(jù)同步插件:Meta.EnableDataSync();啟用實(shí)體鑒別器:Meta.EnableDiscriminator("PersonAttachment");實(shí)體插件06視圖介紹視圖介紹視圖:界面呈現(xiàn)的開(kāi)發(fā)實(shí)現(xiàn),包括界面布局,編輯器,按鈕等相關(guān)界面操作。界面視圖命名規(guī)范:實(shí)體類名+ViewConfig,繼承:WebViewConfig<T>;T為對(duì)應(yīng)的實(shí)體名稱;界面視圖只能建在客戶端工程。視圖配置的方法:1、配置視圖:ConfigView,界面的入口,具體視圖的列和命令操作配置不要在該方法中進(jìn)行配置;2、列表視圖配置:ConfigListView;3、表單視圖配置:ConfigDetailsView,需要配置編輯模式為表單編輯(View.FormEdit())才會(huì)進(jìn)入,需要注意的是一定要先使用編輯模式,再使用默認(rèn)命令集,否則會(huì)出異常;4、查詢視圖配置:ConfigQueryView;查詢命令中不要使用默認(rèn)命令集,否則權(quán)限會(huì)多出一個(gè)view的權(quán)限配置;5、下拉視圖配置:ConfigSelectionView,下拉視圖中不用配置操作命令;6、導(dǎo)入視圖配置:ConfigImportView(),導(dǎo)入命令中不用配置命令;7、自定義視圖配置:使用默認(rèn)命令集(View.UseDefaultCommands())不生效,要把自定義分組添加到額外的分組(DeclareExtendViewGroup)里面,配置具體的列要加Show。視圖介紹07視圖配置思考題列表視圖配置可以做哪些配置?通用視圖ConfigView配置授權(quán)可信的實(shí)體:View.AssignAuthorize(typeof(實(shí)體名))定義額外的視圖,用于加載權(quán)限信息,生成授權(quán)界面:View.DeclareExtendViewGroup();判斷分組信息,執(zhí)行到具體的視圖方法配置;設(shè)置編輯模式,View.InlineEdit();或者View.FormEdit();如果菜單配置中沒(méi)有配置分組信息,編輯模式最好在ConfigListView中進(jìn)行配置;ViewConfig配置列表視圖ConfigListView配置表格設(shè)置不使用分頁(yè):View.WithoutPaging();使用編輯模式:View.InlineEdit();或者View.FormEdit();使用行為:View.AddBehavior("行為js的全名稱空間");使用默認(rèn)命令集:View.UseDefaultCommands();移除命令:View.RemoveCommands(WebCommandNames.Copy);使用命令:View.UseCommands(WebCommandNames.Save);替換命令:View.ReplaceCommands(WebCommandNames.Delete,typeof(DeleteGoodCommand).FullName);清除所有命令:View.ClearCommands();ConfigListView配置列表視圖ConfigListView配置設(shè)置父子顯示比例,默認(rèn)1:1,設(shè)置其他的比例使用View.UseLayoutSize(0.4,0.6);設(shè)置子布局:View.UseChildrenAsHorizontal();View.UseChildrenGroupAsHorizontal();設(shè)置前端排序:View.UseClientOrder();設(shè)置屬性視圖元數(shù)據(jù):View.Property,View.ChildrenProperty和附加子屬性視圖元數(shù)據(jù);設(shè)置不允許編輯:View.DisableEditing();表格列分組的使用:using(View.DeclareBand(“test”));ConfigListView配置表單視圖ConfigDetailsView配置使用行為:View.AddBehavior("行為js的全名稱空間");設(shè)置顯示列數(shù):View.HasDetailColumnsCount(2);設(shè)置表單的寬度和高度:View.UseDetail(600,1000);設(shè)置界面不允許編輯:View.DisableEditing();使用默認(rèn)命令集:View.UseDefaultCommands();移除命令:View.RemoveCommands(WebCommandNames.Copy);使用命令:View.UseCommands(WebCommandNames.Save);替換命令:View.ReplaceCommands(WebCommandNames.Delete, typeof(DeleteGoodsManageCommand).FullName);清除所有命令:View.ClearCommands();設(shè)置父子顯示比例,默認(rèn)1:1:View.UseLayoutSize(0.4,0.6);設(shè)置屬性視圖元數(shù)據(jù):View.Property,View.ChildrenProperty和附加子屬性視圖元數(shù)據(jù);ConfigDetailsView配置選擇視圖、導(dǎo)入視圖、查詢視圖選擇和導(dǎo)入視圖選擇視圖和導(dǎo)入視圖只需要配置列屬性即可;選擇視圖的方法:ConfigSelectionView;導(dǎo)入視圖的方法:ConfigImportView;查詢視圖查詢視圖的方法:ConfigQueryView;查詢視圖的按鈕沒(méi)有控制操作權(quán)限,這一塊不需要設(shè)置操作命令,除非重寫(xiě)對(duì)應(yīng)的命令;必須在實(shí)體中標(biāo)記CriteriaQuery或者是CriteriaQueryProvider特性才會(huì)進(jìn)入ConfigQueryView方法中;選擇、導(dǎo)入和查詢視圖08視圖屬性配置思考題視圖屬性包括哪些配置?屬性配置表格設(shè)置列寬:ShowInList(width:300);表單設(shè)置行和列:ShowInDetail(rowSpan:8,columnSpan:3);設(shè)置列顯示位置:View.Property(p=>p.Describe).HasOrderNo(4);只讀設(shè)置:View.Property(p=>p.Code).Readonly(p=>p.PropertyType!=ItemPropertyType.Catalog)聯(lián)動(dòng)設(shè)置:使用Cascade進(jìn)行設(shè)置;屬性配置屬性配置表格凍結(jié)列設(shè)置:FixColumn();引用屬性使用自定義數(shù)據(jù)源:View.Property(p=>p.SupplierItemId).UseDataSource()View.Property(p=>p.SupplierItemId).UseDataSource((entity,pagingInfo,keyword)=>{varproductTest=entityasProductTest;if(productTest!=null){varlist=RT.Service.Resolve<OrderTestController>().GetSupplierItem(productTest.SupplierTestId,keyword,pagingInfo);returnlist;}else return

newEntityList<SupplierItem>();});屬性配置屬性配置表單設(shè)置換行:BS表單設(shè)置換行需要在要設(shè)置換行的列的前一列設(shè)置對(duì)應(yīng)的列寬和列所占的寬度;如下圖希望工單另起一行,需要設(shè)置工單上面的一列占滿整行和這一列顯示的寬度;屬性配置屬性配置使用編輯器,具體查看編輯器的使用;默認(rèn)值的設(shè)置:View.Property(p=>p.Code).DefaultValue(設(shè)置的值);String屬性類型的默認(rèn)值設(shè)置: View.Property(p=>p.Name).DefaultValue(“Test”);枚舉默認(rèn)值的設(shè)置: View.Property(p=>p.Name).DefaultValue((int)ItemType.Product)設(shè)置當(dāng)前日期:View.Property(p=>p.Date).DefaultValue(System.DateTime.Today).UseDateEditor();設(shè)置當(dāng)前時(shí)間:View.Property(p=>p.DateTime).DefaultValue(DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss")).UseDateTimeEditor();屬性配置屬性配置下拉列表默認(rèn)值設(shè)置:

請(qǐng)求后臺(tái)數(shù)據(jù)庫(kù)賦值:

View.Property(p=>p.EmpId).DefaultValue(RT.Service.Resolve<EmployeeController>().GetLoginUserEmployee())GetLoginUserEmployee方法在服務(wù)端控制器實(shí)現(xiàn),如下:public

virtual

SIE.Resources.Employee

GetLoginUserEmployee()

{

var

employee

=

RF.GetById<SIE.Resources.Employee>(RT.IdentityId);

return

employee;

}

屬性配置09知識(shí)擴(kuò)展知識(shí)擴(kuò)展后端獲取實(shí)體的操作狀態(tài):p.PersistenceStatus=PersistenceStatus.New; PersistenceStatus為當(dāng)前操作的狀態(tài),包括Unchanged、Modified、New、Deleted四種狀態(tài)。RF.Save(entity)會(huì)走框架的驗(yàn)證,保存比較慢,如果是新增批量保存且校驗(yàn)單獨(dú)處理了可以使用RF.BatchInsert(entity)效率會(huì)高很多。RF.Save(entity),會(huì)根據(jù)entity的實(shí)體狀態(tài)去操作數(shù)據(jù),如entity的實(shí)體狀態(tài)為新增,調(diào)用RF.Save就會(huì)執(zhí)行插入操作;如果entity的實(shí)體狀態(tài)為Modified,調(diào)用RF.Save就會(huì)執(zhí)行修改操作;為Deleted,則會(huì)根據(jù)實(shí)體是否啟用假刪除去控制執(zhí)行的是修改還是刪除語(yǔ)句,啟用假刪除,則執(zhí)行的是更新語(yǔ)句,更新了假刪除標(biāo)識(shí)字段,否則執(zhí)行delete語(yǔ)句。前端有涉及到數(shù)據(jù)庫(kù)的操作,操作數(shù)據(jù)庫(kù)的方法一定要放到服務(wù)器控制器中進(jìn)行實(shí)現(xiàn),前端通過(guò)RT.Service.Resolve<控制器類名>().方法名(方法參數(shù))調(diào)用控制器的方法;知識(shí)擴(kuò)展知識(shí)擴(kuò)展Js獲取當(dāng)前操作數(shù)據(jù)是新增還是修改:

前端js獲取屬性的值:entity.get屬性名();前端js設(shè)置屬性的值:entity.set(‘屬性名’,value);entity.set屬性名(value);說(shuō)明:在前端設(shè)置引用屬性的值,除了設(shè)置id的值,還要設(shè)置對(duì)應(yīng)顯示名稱的值,如果id為UnitId,則顯示名稱的命名為UnitId_Display。知識(shí)擴(kuò)展view.getCurrent().isNew()true為新增view.getCurrent().isModified()true為修改view.getCurrent().isDirty()true為臟數(shù)據(jù)思考題實(shí)體升級(jí)數(shù)據(jù)庫(kù)映射表失敗?排查思路:1、WebClient或者WpfClient調(diào)試工程有沒(méi)有添加對(duì)應(yīng)實(shí)體的工程引用;2、數(shù)據(jù)庫(kù)連接字符串有沒(méi)有配置錯(cuò);3、工程初始化類是否能執(zhí)行進(jìn)去;4、數(shù)據(jù)提供者能否執(zhí)行進(jìn)去;5、配置元數(shù)據(jù)的方法能否執(zhí)行進(jìn)去;思考題ConfigListView中配置的表格列和命令與界面顯示的不一致?視圖配置的內(nèi)容取的是自己和繼承父類該方法的并集。練習(xí)1、以下關(guān)于實(shí)體的描述,正確的是()A:實(shí)體可以不用標(biāo)記序列化Serializable特性;B:實(shí)體配置自定義查詢實(shí)體類,是在實(shí)體上標(biāo)記[CriteriaQuery]特性關(guān)聯(lián)的自定義查詢實(shí)體類的;C:子實(shí)體標(biāo)記的特性是ChildEntity,根實(shí)體標(biāo)記的特性是RootEntity;D:配置下拉列表的默認(rèn)顯示名稱,是在實(shí)體中配置DisplayMember,DisplayMember關(guān)聯(lián)的屬性可以是引用屬性。2、以下關(guān)于實(shí)體的屬性,會(huì)映射數(shù)據(jù)庫(kù)表字段的有()A:只讀屬性; B:一般屬性; C:子列表屬性;D:引用屬性; E:視圖屬性3、表格凍結(jié)列設(shè)置是在屬性元數(shù)據(jù)中配置FixColumn()實(shí)現(xiàn)的。()CBD對(duì)本章小結(jié)本章主要講解了工業(yè)管理軟件實(shí)體和界面配置Api,包括:實(shí)體特性;實(shí)體的屬性;實(shí)體屬性特性;實(shí)體配置;界面方法配置;界面屬性配置。學(xué)員能夠根據(jù)不同的業(yè)務(wù)需求熟練的進(jìn)行實(shí)體和界面相關(guān)api的配置,以滿足不同的業(yè)務(wù)需求。THANKYOU深圳市信息職業(yè)技術(shù)學(xué)院3.4平臺(tái)通用配置深圳市信息職業(yè)技術(shù)學(xué)院——平臺(tái)編輯器使用介紹String類型編輯器數(shù)值類型編輯器時(shí)間類型編輯器引用類型編輯器通用編輯器介紹枚舉類型編輯器圖片編輯器Bool類型編輯器快碼編輯器知識(shí)回顧實(shí)體介紹;實(shí)體屬性及實(shí)體屬性特性;實(shí)體特性;實(shí)體配置;視圖介紹;視圖配置;視圖屬性配置;知識(shí)擴(kuò)展;學(xué)習(xí)目標(biāo)通過(guò)本節(jié)學(xué)習(xí)可以:掌握框架實(shí)現(xiàn)的通用編輯器包括哪些?能夠區(qū)分什么類型的屬性使用什么編輯器?掌握平臺(tái)不同編輯器的使用;掌握編輯器屬性的配置使用。01通用編輯器介紹編輯器介紹編輯器介紹框架實(shí)現(xiàn)的編輯器包括:文本編輯器、數(shù)值編輯器、下拉編輯器、枚舉編輯器、復(fù)選框編輯器、時(shí)間類型編輯器、圖片編輯器和快碼編輯器。String類型的屬性框架默認(rèn)使用的編輯器為文本編輯器:UseTextEditor();Bool類型的屬性框架默認(rèn)使用的編輯器為復(fù)選框編輯器:UseCheckEditor();枚舉類型的屬性框架默認(rèn)使用的是枚舉編輯器:UseEnumEditor();數(shù)值類型的屬性框架默認(rèn)使用的是數(shù)值編輯器:UseSpinEditor();時(shí)間類型的屬性框架默認(rèn)使用的是日期時(shí)間編輯器:UseDateTimeEditor();引用類型的屬性框架默認(rèn)使用的是下拉列表編輯器:UsePagingLookUpEditor();編輯器注意事項(xiàng)編輯器注意事項(xiàng)框架編輯器的使用依賴于屬性的類型,如框架默認(rèn)下拉編輯器只能使用在引用屬性,在其他類型中使用下拉列表編輯器會(huì)報(bào)錯(cuò)。如果不設(shè)置編輯器的具體參數(shù),框架默認(rèn)會(huì)根據(jù)屬性的類型去讀取對(duì)應(yīng)的編輯器來(lái)展示,不需要額外進(jìn)行指定對(duì)應(yīng)的編輯器。所有的編輯器都有ColumnXType(列的類型)和XType(控件類型),用于對(duì)編輯器進(jìn)行重寫(xiě),ColumnXType和XType綁定的值為控件js文件的別名。02String類型編輯器String類型編輯器String類型屬性使用的編輯器即為文本編輯器。文本編輯器包含如下幾種: 1、字符串屬性編輯器UseTextEditor():框架string類型屬性默認(rèn)的編輯器常用參數(shù):AllowBlank(是否允許為空)、MaxLength(最大長(zhǎng)度)、MasLengthText(最大長(zhǎng)度驗(yàn)證失敗提示信息)、MinLenght(最小長(zhǎng)度)、MinLenghtText(最小長(zhǎng)度驗(yàn)證失敗提示信息) 2、密碼編輯器:UsePasswordEditor();常用參數(shù):AllowBlank(是否允許為空)、MaxLength(最大長(zhǎng)度)、MasLengthText(最大長(zhǎng)度驗(yàn)證失敗提示信息)、MinLenght(最小長(zhǎng)度)、MinLenghtText(最小長(zhǎng)度驗(yàn)證失敗提示信息)。 3、大文本編輯器:UseMemoEditor();常用參數(shù):AllowBlank(是否允許為空)String類型編輯器03數(shù)值類型編輯器數(shù)值類型編輯器數(shù)值類型編輯器:UseSpinEditor()常用參數(shù):AllowBlank(是否允許為空)、MaxValue(最大值)、MinValue(最小值)、AllowDecimals(是否允許為小數(shù))、DecimalPrecision(小數(shù)位數(shù))、AllowNegative(是否允許為負(fù)數(shù))、Step(增量設(shè)置)。說(shuō)明: 1、整數(shù)類型的屬性使用數(shù)值編輯器,沒(méi)有小數(shù)位數(shù),也不能設(shè)置小數(shù)位數(shù); 2、浮點(diǎn)類型的屬性使用數(shù)值編輯器,默認(rèn)三位小數(shù),增量默認(rèn)為0.001;數(shù)值類型編輯器思考題數(shù)值類型的編輯器要使增量失效,可以怎么做?可以設(shè)置數(shù)值編輯器的Step為0,即.UseSpinEditor(p=>p.Step=0)。04時(shí)間類型編輯器日期時(shí)間編輯器屬性類型為DateTime的屬性使用的編輯器為時(shí)間類型編輯器,時(shí)間類型的編輯器包括:日期時(shí)間編輯器、日期編輯器、時(shí)間編輯器和日期范圍編輯器。1、日期時(shí)間編輯器:UseDateTimeEditor(),使用該編輯器顯示格式為:年月日時(shí)分秒。常用參數(shù):AllowBlank(是否允許為空)、MaxValue(最大值)、MinValue(最小值)。默認(rèn)值設(shè)置:設(shè)置為當(dāng)前時(shí)間使用示例:View.Property(p=>p.EffectiveStartTime).DefaultValue(DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss")).UseDateTimeEditor()日期時(shí)間編輯器日期編輯器2、日期編輯器:UseDateEditor(),使用該編輯器顯示格式為:年月日常用參數(shù):Format(日期格式化)、AllowBlank(是否允許為空)、MaxValue(最大值)、MinValue(最小值)。默認(rèn)值設(shè)置:設(shè)置為當(dāng)前日期為默認(rèn)值View.Property(p=>p.EffectiveStartTime).DefaultValue(System.DateTime.Today).UseDateEditor()格式化設(shè)置:View.Property(p=>p.Property7).UseDateEditor(p=>p.Format="Y/m/d");View.Property(p=>p.Property3).UseDateEditor(p=>p.Format="Y-m-d");日期編輯器時(shí)間編輯器3、時(shí)間編輯器:UseTimeEditor(),使用該編輯器顯示格式為:時(shí)分秒常用參數(shù):Format(日期格式化)、AllowBlank(是否允許為空)、MaxValue(最大值)、MinValue(最小值)。格式化設(shè)置:View.Property(p=>p.Property7).UseTimeEditor(p=>p.Format="H")View.Property(p=>p.Property3).UseTimeEditor(p=>p.Format="H:m:s")時(shí)間編輯器日期范圍編輯器4、日期范圍編輯器:UseDateRangeEditor()常用參數(shù):DateFormat(格式化)、AllowBlank(是否允許為空)、MaxValue(最大值)、MinValue(最小值)、DateRangeType(日期范圍類型)、StartDate(開(kāi)始日期)、EndDate(結(jié)束日期)。使用示例:設(shè)置日期范圍默認(rèn)為當(dāng)前月View.Property(p=>p.UpdateDate).UseDateRangeEditor(p=>p.DateRangeType=ObjectModel.DateRangeType.Month);格式化設(shè)置:View.Property(p=>p.UpdateDate).UseDateRangeEditor(p=>{p.DateFormat="Y-m-d";});注意事項(xiàng):

1、日期范圍參數(shù)DateRangeType不設(shè)置,默認(rèn)為當(dāng)天; 2、如果是自定義查詢實(shí)體實(shí)現(xiàn)日期范圍的查詢,查詢實(shí)體對(duì)應(yīng)使用日期范圍控件的數(shù)據(jù)類型要設(shè)置為日期范圍DateRange;日期范圍編輯器05引用類型編輯器引用類型編輯器引用類型編輯器使用的是下拉編輯器:UsePagingLookUpEditor()常用參數(shù):AllowBlank(是否允許為空)、DisplayField(顯示值)、BindDisplayField(顯示綁定的值,通常要與DisplayField一起使用)、DicLinkField(聯(lián)動(dòng)字段)、Editable(是否可編輯)、XType(控件的類型)。必須要是引用屬性才能使用該編輯器如前面講的讀者管理的類別號(hào)關(guān)聯(lián)的是讀者分類的信息,讀者管理的類別號(hào)用下拉列表實(shí)現(xiàn)。我們回顧下實(shí)現(xiàn)步驟:引用類型編輯器引用類型編輯器使用步驟 1、讀者管理的實(shí)體添加引用屬性,引用屬性關(guān)聯(lián)的實(shí)體為讀者分類使用步驟引用類型編輯器2、在讀者分類的實(shí)體中配置顯示名稱,這步不做,會(huì)導(dǎo)致下拉選擇后無(wú)法顯示問(wèn)題使用步驟引用類型編輯器3、在讀者分類的界面中配置選擇視圖,這步不做或者配置的地方不對(duì),會(huì)導(dǎo)致下拉選擇的數(shù)據(jù)和列顯示異常。使用步驟引用類型編輯器4、在讀者管理中使用下拉編輯器。注意:使用modelfirst建模生成的界面配置屬性的展示是用的引用屬性管理的實(shí)體進(jìn)行下拉關(guān)聯(lián)的,這里要改成用id,這樣改的目前是避免N+1查詢的問(wèn)題。使用步驟引用類型編輯器5、效果。使用步驟思考題引用類型編輯器需要根據(jù)條件展示數(shù)據(jù),應(yīng)該如何實(shí)現(xiàn)?引用屬性自定義編輯器的實(shí)現(xiàn)說(shuō)明:引用屬性下拉編輯器,項(xiàng)目使用場(chǎng)景較多的就是根據(jù)不同的條件展示下拉選擇數(shù)據(jù),這種需求通過(guò)重寫(xiě)數(shù)據(jù)源,處理數(shù)據(jù)加載部分即可滿足需求。使用步驟: 1、在界面端建一個(gè)擴(kuò)展靜態(tài)類,類名以Extention結(jié)尾,如下:使用步驟引用屬性自定義編輯器的實(shí)現(xiàn)2、在靜態(tài)類中實(shí)現(xiàn)自定義編輯器方法:

///

<summary>

///打印模板配置-標(biāo)簽?zāi)0寮?jí)聯(lián)編輯器

///

</summary>

///

<typeparam

name="T">實(shí)體類型</typeparam>

///

<param

name="meta">屬性視圖元數(shù)據(jù)</param>

///

<param

name="action">委托</param>

///

<returns>泛型屬性視圖元數(shù)據(jù)</returns>

public

staticWebEntityPropertyViewMeta<T>UseLabelPrintTemplateEditor<T>(thisWebEntityPropertyViewMeta<T>meta,Action<PagingLookUpBaseConfig>action=null)

{meta.UseDataSource((source,pagingInfo,keyword)=>

{

vartemplate=sourceasLabelPrintTemplate;

vartemplates=newEntityList<PrintTemplate>();

if(template==null||template.NumberRule==null)

returntemplates;

vartemplateList=RT.Service.Resolve<ItemController>().GetRuleInTemplates(template.NumberRuleId.Value,pagingInfo,keyword);

returntemplateList;}).UsePagingLookUpEditor(action);

returnmeta;

}使用步驟Source為數(shù)據(jù)源,即使用編輯器界面對(duì)應(yīng)的實(shí)體。符合條件的下拉選擇列表的數(shù)據(jù),數(shù)據(jù)類型為EntityList。引用屬性自定義編輯器的實(shí)現(xiàn)3、后臺(tái)查詢數(shù)據(jù)庫(kù)方法的實(shí)現(xiàn):

public

virtualEntityList<PrintTemplate>GetRuleInTemplates(doubleruleId,PagingInfopagingInfo,stringkeyword)

{

varquery=Query<PrintTemplate>().LeftJoin<NumberRuleInTemplate>((x,y)=>x.Id==y.TemplateId).Where<NumberRuleInTemplate>((x,y)=>y.RuleId==ruleId);

if(!keyword.IsNullOrEmpty())query.Where(x=>x.EntityName.Contains(keyword)||x.FileName.Contains(keyword));

varresult=query.ToList(pagingInfo,newEagerLoadOptions().LoadWithViewProperty());

returnresult;

}使用步驟返回值要主要分頁(yè)和懶加載的問(wèn)題Keyword的查詢條件要與實(shí)體配置條件一致引用屬性自定義編輯器的實(shí)現(xiàn)4、ViewConfig使用自定義編輯器使用步驟引用屬性自定義編輯器的實(shí)現(xiàn)5、效果使用步驟06枚舉類型編輯器枚舉類型編輯器枚舉編輯器UseEnumEditor()常用參數(shù):AllowBlank(是否允許為空)。設(shè)置默認(rèn)值及使用:View.Property(p=>p.Type).DefaultValue((int)ItemType.Product).UseEnumEditor()

其中:Type的屬性類型必須是枚舉,ItemType為枚舉,Product為枚舉的屬性;框架枚舉編輯器支持帶條件搜索,使用如下:

View.Property(p=>p.Type).UseEnumEditor("CriteriaEntity");枚舉類型編輯器07圖片編輯器圖片編輯器圖片編輯器UseImageComponentEditor()說(shuō)明:框架圖片編輯器只能在表單中使用,列表使用不生效;使用圖片編輯器的屬性類型只能是byte[];圖片編輯器雖然有參數(shù)Width(寬)、Height(高)等這些,但是一般我們?cè)赟howInDetail中設(shè)置相應(yīng)的參數(shù)效果會(huì)好些。圖片編輯器08Bool類型編輯器Bool類型編輯器復(fù)選框編輯器UseCheckEditor():框架bool類型默認(rèn)的編輯器常用參數(shù):AllowBlank(是否允許為空)、Editable(是否可編輯)。使用:View.Property(p=>p.Check).UseCheckEditor();布爾下拉編輯器UseCheckDropDownEditor()常用參數(shù):AllowBlank(是否允許為空)、Editable(是否可編輯)。使用:

View.Property(p=>p.Check).UseCheckDropDownEditor();Bool類型編輯器09快碼編輯器框架快碼功能介紹快碼可以理解為是動(dòng)態(tài)的枚舉或者是數(shù)據(jù)字典,在SMOM平臺(tái)中,做了一個(gè)快碼的功能包含主表和從表,用于維護(hù)這些基礎(chǔ)數(shù)據(jù),主表的數(shù)據(jù)不能在界面維護(hù),需要在程序中實(shí)現(xiàn)或者是在數(shù)據(jù)庫(kù)中處理,從表的數(shù)據(jù)可在界面中維護(hù);而框架做的快碼編輯器就是通過(guò)快碼主表的編碼做查詢條件,將滿足條件的明細(xì)數(shù)據(jù)篩選出來(lái)展示在快碼下拉編輯器中??蚣芸齑a功能介紹快碼的應(yīng)用場(chǎng)景控制邏輯標(biāo)識(shí):使用快碼可以對(duì)復(fù)雜的邏輯結(jié)構(gòu)進(jìn)行標(biāo)識(shí)和記錄,方便對(duì)其進(jìn)行維護(hù)和修改;生產(chǎn)過(guò)程監(jiān)控:使用快碼可以方便標(biāo)識(shí)并追蹤生產(chǎn)流程中的各個(gè)環(huán)節(jié)和產(chǎn)出物的信息,從而提高生產(chǎn)效率和質(zhì)量;需求調(diào)研和功能設(shè)計(jì)階段,對(duì)一些類型的分類不明確或者是分類較多的,使用枚舉開(kāi)發(fā)這類需求會(huì)存在反復(fù)改代碼的問(wèn)題;如果所有這類需求都用基礎(chǔ)數(shù)據(jù)界面維護(hù),功能開(kāi)發(fā)會(huì)較多且不利于維護(hù)數(shù)據(jù);基于這種場(chǎng)景考慮,框架引入了快碼這個(gè)功能,專門處理這種場(chǎng)景的業(yè)務(wù)需求??齑a的應(yīng)用場(chǎng)景快碼功能主表數(shù)據(jù)的添加從快碼功能菜單可以看出,快碼主表的數(shù)據(jù)是不能在界面中進(jìn)行維護(hù)的,而快碼編輯器獲取的是對(duì)應(yīng)主表下的所有明細(xì)數(shù)據(jù)。所以我們?cè)谑褂镁庉嬈髦耙葘⒖齑a主表的數(shù)據(jù)維護(hù)起來(lái)。主表數(shù)據(jù)的維護(hù)提供兩種方式: 1、通過(guò)數(shù)據(jù)庫(kù)腳本的方式執(zhí)行:這種方式必須掌握; 2、在程序中通過(guò)程序添加數(shù)據(jù):這種方式要清楚原理,能看懂代碼??齑a功能主表數(shù)據(jù)的添加快碼功能主表數(shù)據(jù)的添加快碼和快碼明細(xì)對(duì)應(yīng)的表

快碼主表名:BD_CATALOG_TYPE;快碼明細(xì)表名:BD_CATALOGOracle執(zhí)行腳本:insertintoBD_CA

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論