MES开发与应用 课件 3.4.4-3.4.5 工业管理软件开发基础-平台通配置-实体和界面配置Api;3.4.7 工业管理软件开发基础-平台通配置-平台编辑器使用介绍_第1页
MES开发与应用 课件 3.4.4-3.4.5 工业管理软件开发基础-平台通配置-实体和界面配置Api;3.4.7 工业管理软件开发基础-平台通配置-平台编辑器使用介绍_第2页
MES开发与应用 课件 3.4.4-3.4.5 工业管理软件开发基础-平台通配置-实体和界面配置Api;3.4.7 工业管理软件开发基础-平台通配置-平台编辑器使用介绍_第3页
MES开发与应用 课件 3.4.4-3.4.5 工业管理软件开发基础-平台通配置-实体和界面配置Api;3.4.7 工业管理软件开发基础-平台通配置-平台编辑器使用介绍_第4页
MES开发与应用 课件 3.4.4-3.4.5 工业管理软件开发基础-平台通配置-实体和界面配置Api;3.4.7 工业管理软件开发基础-平台通配置-平台编辑器使用介绍_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

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

文档简介

3.4平台通用配置深圳市信息职业技术学院——实体和界面配置Api实体属性实体属性特性实体特性实体配置实体介绍视图介绍视图配置视图属性配置知识扩展知识回顾控制器实现介绍;框架分组介绍;自定义分组的实现方式,三种入口的实现方式;自定义分组三种实现方式的实现示例;自定义分组的注意事项;学习目标通过本节学习可以:掌握实体包含的特性、实体属性、属性标签;掌握实体的配置;掌握界面的方法及使用;掌握界面方法的属性配置、命令配置、界面呈现配置;了解实体的组成;了解界面的组成。01实体介绍思考题平台框架定义的实体通用属性包括哪些?实体介绍实体介绍1、实体通常会映射数据库,所有新建实体类要建在服务端工程;2、实体类必须包含在对应文件夹下;文件夹以“实体名+S”进行命名;3、实体一定要包含命名空间,且命名空间要规范,一般为“对应工程名+文件夹名”;4、实体一般定义为部分类,直接或间接继承DataEntity;5、实体类继承的父实体尽量不要包含子列表属性,如果包含,子实体又没有用new关键字覆盖父实体属性,BS生成界面会报错;6、实体类中尽量只包含对应的属性,尽量不要去写与业务逻辑相关的代码;实体介绍实体介绍7、实体属性包含一般属性、引用属性、列表属性、只读属性和视图属性;默认情况下一般属性和引用属性会映射生成数据库表字段,其他的属性不会。8、创建实体的属性,我们只建业务相关的属性,业务属性不要和框架属性命名冲突,框架定义的属性包括:Id,CreateBy,CreateDate,InvOrgId,IsPhantom,SyncId,UpdateBy,UpdateDate;框架属性对应数据库表字段如下:9、实体类中的实体配置以“类名+Config”进行命名;02实体属性一般属性实体属性:实体属性是通过托管属性进行注册的,托管属性通过P<T>.Register()方法进行注册,T为所注册的托管属性的实体所有者(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和引用实体两个属性,必须在同一实体中成对定义,属性类型为double。引用属性需指定引用类型ReferenceType,一般引用为Normal,子实体引用父实体为Parent。#region

读者管理与读者分类的关系ReaderCat[Label("类别号")]public

static

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

<summary>///读者管理与读者分类的关系Id///

</summary>public

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

<summary>///读者管理与读者分类的关系///

</summary>public

static

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

<summary>///读者管理与读者分类的关系///

</summary>publicReaderCatReaderCat{get{returnGetRefEntity(ReaderCatProperty);}set{SetRefEntity(ReaderCatProperty,value);}}#endregion引用属性引用Id引用实体引用类型,一般外键为Normal列表属性列表属性:子列表的属性,一对多关系中,父实体包含子实体的列表。#region

图书大类与小类的关系SmallBookCatList///

<summary>///图书大类与小类的关系///

</summary>public

static

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

<summary>///图书大类与小类的关系///

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

this.GetLazyList(SmallBookCatListProperty);}}#endregion列表属性只读属性只读属性:只读属性用于表示实体中的一个只读的数据。只读属性主要为界面展现层设计。#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只读属性视图属性视图属性:视图属性是通过引用属性懒加载的数据,主要为界面展现层设计。如果实体和继承的父实体中没有引用属性,则不能使用视图属性。#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视图属性通过引用实体.属性名加载出来视图属性的内容思考题实体的一般属性支持哪些类型?03实体属性特性实体属性特性属性名称标签(Label):用于在实体属性上声明属性的显示名称。必填标签(Required):声明实体属性不能为空,字符串类型属性会标记该特性。非重复标签(NotDuplicate):声明实体属性不能重复。最大长度标签(MaxLength):声明实体属性的最大长度,字符串类型的属性会标记该特性。最小长度标签(MinLength):声明实体属性的最小长度,字符串类型的属性会标记该特性。最大值标签(MaxValue):声明实体属性的最大值,数值类型的属性会标记该特性。最小值标签(MinValue):声明实体属性的最小值,数值类型的属性会标记该特性。属性默认值(DefaultValue):属性默认值设置,作用域为当前实体。实体属性特性04实体特性实体特性实体类型特性(RootEntity,ChildEntity,QueryEntity):用于在实体上声明实体的类型。实体序列化特性(Serializable):用于在实体上声明实体可序列化。实体名称特性(Label):用于在实体上声明实体的显示名称。实体成员显示特性(DisplayMember):用于在实体上声明实体被引用时显示哪个属性的值,注意显示的成员必须是普通属性,且必须是数据库表中存在字段对应的属性。实体通用查询特性(CriteriaQuery):用于在实体上声明实体的查询使用通过查询条件,CriteriaQuery后面不关联类则使用的是框架标准查询,关联类即CriteriaQuery(typeof(类)),则查询自己实现。实体特性实体特性实体查询特性(ConditionQueryType):用于在实体上声明实体使用的查询实体类型(注意:实体查询标签与实体通用查询标签只能标记其中的一个)。下拉列表查询条件特性(QueryMembers):用于在实体上声明实体被引用时下拉列表的查询条件配置。实体配置项特性(EntityWithConfig):用于在实体上声明实体通用配置值。单据打印特性(BillPrintable):用于在实体上声明界面单据打印命令的配置。实体特性05实体配置思考题实体元数据配置支持哪些配置?实体配置实体配置包括“实体规则配置”和“实体元数据配置”。实体规则:重写AddValidations方法,这里配置的是标准规则,标准规则不能在界面进行启用和禁用操作,代码编写即生效,建议在项目上如果没有特殊的要求可以使用该规则进行实现(可以减少实体元数据的更新操作)。可以实现的标准规则验证:1、非空验证;2、长度验证;3、最大最小值验证;4、非重复验证(支持单个和多个属性的非重复验证);5、正则表达式的验证;6、实体验证(HandlerRule),该验证中可以查数据库进行验证操作。实体配置实体元数据配置实体元数据的配置,可以映射表、映射视图、映射属性和实体插件。映射数据库表:Meta.MapTable(“RES_EMP_GROUP”);映射视图1)直接读取数据库的视图:Meta.MapView(“V_RES_EMP_GROUP”);2)通过sql查询出来的视图:Meta.MapView(“(SELECT*FROMRES_EMP_GROUP)”);3)通过DB.Query查询出来的视图:

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

Meta.MapView(view);//影射一条IQuery查询的视图,注意查询中不能出现当前实体,否则会出现死循环。映射表和视图实体元数据配置映射实体中的所有属性为数据库表字段:Meta.MapAllProperties();映射指定的属性及属性长度:

Meta.Property(Employee.CodeProperty).MapColumn().HasLength(50);Meta.Property(Employee.CodeProperty).MapColumn().DataTypeLength=“50";排除某些字段不映射数据库的设置:

Meta.MapAllPropertiesExcept(Employee.CodeProperty);指定某个字段不映射数据库:DontMapColumn;

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

Meta.Property(Resource.KeyProperty).MapColumn().HasIndex(IndexTypeMeta.UniqueIndexed);建立组合索引:使用IndexGroupOnProperties设置。

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

Meta.Property(SupplierShipBill.MasterBillIdProperty).ColumnMeta.IgnoreFK();映射属性实体元数据配置启用假删除:Meta.EnablePhantoms();禁用假删除:Meta.DisablePhantoms();启用库存组织:Meta.EnableInvOrg();

禁用库存组织:Meta.DisableInvOrg();启用实体排序:Meta.EnableSort();

禁用实体排序:Meta.DisableSort();启用树形插件:Meta.SupportTree();启用实体编辑日志记录插件:Meta.EnableEntityLog();启用数据同步插件:Meta.EnableDataSync();启用实体鉴别器:Meta.EnableDiscriminator("PersonAttachment");实体插件06视图介绍视图介绍视图:界面呈现的开发实现,包括界面布局,编辑器,按钮等相关界面操作。界面视图命名规范:实体类名+ViewConfig,继承:WebViewConfig<T>;T为对应的实体名称;界面视图只能建在客户端工程。视图配置的方法:1、配置视图:ConfigView,界面的入口,具体视图的列和命令操作配置不要在该方法中进行配置;2、列表视图配置:ConfigListView;3、表单视图配置:ConfigDetailsView,需要配置编辑模式为表单编辑(View.FormEdit())才会进入,需要注意的是一定要先使用编辑模式,再使用默认命令集,否则会出异常;4、查询视图配置:ConfigQueryView;查询命令中不要使用默认命令集,否则权限会多出一个view的权限配置;5、下拉视图配置:ConfigSelectionView,下拉视图中不用配置操作命令;6、导入视图配置:ConfigImportView(),导入命令中不用配置命令;7、自定义视图配置:使用默认命令集(View.UseDefaultCommands())不生效,要把自定义分组添加到额外的分组(DeclareExtendViewGroup)里面,配置具体的列要加Show。视图介绍07视图配置思考题列表视图配置可以做哪些配置?通用视图ConfigView配置授权可信的实体:View.AssignAuthorize(typeof(实体名))定义额外的视图,用于加载权限信息,生成授权界面:View.DeclareExtendViewGroup();判断分组信息,执行到具体的视图方法配置;设置编辑模式,View.InlineEdit();或者View.FormEdit();如果菜单配置中没有配置分组信息,编辑模式最好在ConfigListView中进行配置;ViewConfig配置列表视图ConfigListView配置表格设置不使用分页:View.WithoutPaging();使用编辑模式:View.InlineEdit();或者View.FormEdit();使用行为:View.AddBehavior("行为js的全名称空间");使用默认命令集:View.UseDefaultCommands();移除命令:View.RemoveCommands(WebCommandNames.Copy);使用命令:View.UseCommands(WebCommandNames.Save);替换命令:View.ReplaceCommands(WebCommandNames.Delete,typeof(DeleteGoodCommand).FullName);清除所有命令:View.ClearCommands();ConfigListView配置列表视图ConfigListView配置设置父子显示比例,默认1:1,设置其他的比例使用View.UseLayoutSize(0.4,0.6);设置子布局:View.UseChildrenAsHorizontal();View.UseChildrenGroupAsHorizontal();设置前端排序:View.UseClientOrder();设置属性视图元数据:View.Property,View.ChildrenProperty和附加子属性视图元数据;设置不允许编辑:View.DisableEditing();表格列分组的使用:using(View.DeclareBand(“test”));ConfigListView配置表单视图ConfigDetailsView配置使用行为:View.AddBehavior("行为js的全名称空间");设置显示列数:View.HasDetailColumnsCount(2);设置表单的宽度和高度:View.UseDetail(600,1000);设置界面不允许编辑:View.DisableEditing();使用默认命令集:View.UseDefaultCommands();移除命令:View.RemoveCommands(WebCommandNames.Copy);使用命令:View.UseCommands(WebCommandNames.Save);替换命令:View.ReplaceCommands(WebCommandNames.Delete, typeof(DeleteGoodsManageCommand).FullName);清除所有命令:View.ClearCommands();设置父子显示比例,默认1:1:View.UseLayoutSize(0.4,0.6);设置属性视图元数据:View.Property,View.ChildrenProperty和附加子属性视图元数据;ConfigDetailsView配置选择视图、导入视图、查询视图选择和导入视图选择视图和导入视图只需要配置列属性即可;选择视图的方法:ConfigSelectionView;导入视图的方法:ConfigImportView;查询视图查询视图的方法:ConfigQueryView;查询视图的按钮没有控制操作权限,这一块不需要设置操作命令,除非重写对应的命令;必须在实体中标记CriteriaQuery或者是CriteriaQueryProvider特性才会进入ConfigQueryView方法中;选择、导入和查询视图08视图属性配置思考题视图属性包括哪些配置?属性配置表格设置列宽:ShowInList(width:300);表单设置行和列:ShowInDetail(rowSpan:8,columnSpan:3);设置列显示位置:View.Property(p=>p.Describe).HasOrderNo(4);只读设置:View.Property(p=>p.Code).Readonly(p=>p.PropertyType!=ItemPropertyType.Catalog)联动设置:使用Cascade进行设置;属性配置属性配置表格冻结列设置:FixColumn();引用属性使用自定义数据源: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>();});属性配置属性配置表单设置换行:BS表单设置换行需要在要设置换行的列的前一列设置对应的列宽和列所占的宽度;如下图希望工单另起一行,需要设置工单上面的一列占满整行和这一列显示的宽度;属性配置属性配置使用编辑器,具体查看编辑器的使用;默认值的设置:View.Property(p=>p.Code).DefaultValue(设置的值);String属性类型的默认值设置: View.Property(p=>p.Name).DefaultValue(“Test”);枚举默认值的设置: View.Property(p=>p.Name).DefaultValue((int)ItemType.Product)设置当前日期:View.Property(p=>p.Date).DefaultValue(System.DateTime.Today).UseDateEditor();设置当前时间:View.Property(p=>p.DateTime).DefaultValue(DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss")).UseDateTimeEditor();属性配置属性配置下拉列表默认值设置:

请求后台数据库赋值:

View.Property(p=>p.EmpId).DefaultValue(RT.Service.Resolve<EmployeeController>().GetLoginUserEmployee())GetLoginUserEmployee方法在服务端控制器实现,如下:public

virtual

SIE.Resources.Employee

GetLoginUserEmployee()

{

var

employee

=

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

return

employee;

}

属性配置09知识扩展知识扩展后端获取实体的操作状态:p.PersistenceStatus=PersistenceStatus.New; PersistenceStatus为当前操作的状态,包括Unchanged、Modified、New、Deleted四种状态。RF.Save(entity)会走框架的验证,保存比较慢,如果是新增批量保存且校验单独处理了可以使用RF.BatchInsert(entity)效率会高很多。RF.Save(entity),会根据entity的实体状态去操作数据,如entity的实体状态为新增,调用RF.Save就会执行插入操作;如果entity的实体状态为Modified,调用RF.Save就会执行修改操作;为Deleted,则会根据实体是否启用假删除去控制执行的是修改还是删除语句,启用假删除,则执行的是更新语句,更新了假删除标识字段,否则执行delete语句。前端有涉及到数据库的操作,操作数据库的方法一定要放到服务器控制器中进行实现,前端通过RT.Service.Resolve<控制器类名>().方法名(方法参数)调用控制器的方法;知识扩展知识扩展Js获取当前操作数据是新增还是修改:

前端js获取属性的值:entity.get属性名();前端js设置属性的值:entity.set(‘属性名’,value);entity.set属性名(value);说明:在前端设置引用属性的值,除了设置id的值,还要设置对应显示名称的值,如果id为UnitId,则显示名称的命名为UnitId_Display。知识扩展view.getCurrent().isNew()true为新增view.getCurrent().isModified()true为修改view.getCurrent().isDirty()true为脏数据思考题实体升级数据库映射表失败?排查思路:1、WebClient或者WpfClient调试工程有没有添加对应实体的工程引用;2、数据库连接字符串有没有配置错;3、工程初始化类是否能执行进去;4、数据提供者能否执行进去;5、配置元数据的方法能否执行进去;思考题ConfigListView中配置的表格列和命令与界面显示的不一致?视图配置的内容取的是自己和继承父类该方法的并集。练习1、以下关于实体的描述,正确的是()A:实体可以不用标记序列化Serializable特性;B:实体配置自定义查询实体类,是在实体上标记[CriteriaQuery]特性关联的自定义查询实体类的;C:子实体标记的特性是ChildEntity,根实体标记的特性是RootEntity;D:配置下拉列表的默认显示名称,是在实体中配置DisplayMember,DisplayMember关联的属性可以是引用属性。2、以下关于实体的属性,会映射数据库表字段的有()A:只读属性; B:一般属性; C:子列表属性;D:引用属性; E:视图属性3、表格冻结列设置是在属性元数据中配置FixColumn()实现的。()CBD对本章小结本章主要讲解了工业管理软件实体和界面配置Api,包括:实体特性;实体的属性;实体属性特性;实体配置;界面方法配置;界面属性配置。学员能够根据不同的业务需求熟练的进行实体和界面相关api的配置,以满足不同的业务需求。THANKYOU深圳市信息职业技术学院3.4平台通用配置深圳市信息职业技术学院——平台编辑器使用介绍String类型编辑器数值类型编辑器时间类型编辑器引用类型编辑器通用编辑器介绍枚举类型编辑器图片编辑器Bool类型编辑器快码编辑器知识回顾实体介绍;实体属性及实体属性特性;实体特性;实体配置;视图介绍;视图配置;视图属性配置;知识扩展;学习目标通过本节学习可以:掌握框架实现的通用编辑器包括哪些?能够区分什么类型的属性使用什么编辑器?掌握平台不同编辑器的使用;掌握编辑器属性的配置使用。01通用编辑器介绍编辑器介绍编辑器介绍框架实现的编辑器包括:文本编辑器、数值编辑器、下拉编辑器、枚举编辑器、复选框编辑器、时间类型编辑器、图片编辑器和快码编辑器。String类型的属性框架默认使用的编辑器为文本编辑器:UseTextEditor();Bool类型的属性框架默认使用的编辑器为复选框编辑器:UseCheckEditor();枚举类型的属性框架默认使用的是枚举编辑器:UseEnumEditor();数值类型的属性框架默认使用的是数值编辑器:UseSpinEditor();时间类型的属性框架默认使用的是日期时间编辑器:UseDateTimeEditor();引用类型的属性框架默认使用的是下拉列表编辑器:UsePagingLookUpEditor();编辑器注意事项编辑器注意事项框架编辑器的使用依赖于属性的类型,如框架默认下拉编辑器只能使用在引用属性,在其他类型中使用下拉列表编辑器会报错。如果不设置编辑器的具体参数,框架默认会根据属性的类型去读取对应的编辑器来展示,不需要额外进行指定对应的编辑器。所有的编辑器都有ColumnXType(列的类型)和XType(控件类型),用于对编辑器进行重写,ColumnXType和XType绑定的值为控件js文件的别名。02String类型编辑器String类型编辑器String类型属性使用的编辑器即为文本编辑器。文本编辑器包含如下几种: 1、字符串属性编辑器UseTextEditor():框架string类型属性默认的编辑器常用参数:AllowBlank(是否允许为空)、MaxLength(最大长度)、MasLengthText(最大长度验证失败提示信息)、MinLenght(最小长度)、MinLenghtText(最小长度验证失败提示信息) 2、密码编辑器:UsePasswordEditor();常用参数:AllowBlank(是否允许为空)、MaxLength(最大长度)、MasLengthText(最大长度验证失败提示信息)、MinLenght(最小长度)、MinLenghtText(最小长度验证失败提示信息)。 3、大文本编辑器:UseMemoEditor();常用参数:AllowBlank(是否允许为空)String类型编辑器03数值类型编辑器数值类型编辑器数值类型编辑器:UseSpinEditor()常用参数:AllowBlank(是否允许为空)、MaxValue(最大值)、MinValue(最小值)、AllowDecimals(是否允许为小数)、DecimalPrecision(小数位数)、AllowNegative(是否允许为负数)、Step(增量设置)。说明: 1、整数类型的属性使用数值编辑器,没有小数位数,也不能设置小数位数; 2、浮点类型的属性使用数值编辑器,默认三位小数,增量默认为0.001;数值类型编辑器思考题数值类型的编辑器要使增量失效,可以怎么做?可以设置数值编辑器的Step为0,即.UseSpinEditor(p=>p.Step=0)。04时间类型编辑器日期时间编辑器属性类型为DateTime的属性使用的编辑器为时间类型编辑器,时间类型的编辑器包括:日期时间编辑器、日期编辑器、时间编辑器和日期范围编辑器。1、日期时间编辑器:UseDateTimeEditor(),使用该编辑器显示格式为:年月日时分秒。常用参数:AllowBlank(是否允许为空)、MaxValue(最大值)、MinValue(最小值)。默认值设置:设置为当前时间使用示例:View.Property(p=>p.EffectiveStartTime).DefaultValue(DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss")).UseDateTimeEditor()日期时间编辑器日期编辑器2、日期编辑器:UseDateEditor(),使用该编辑器显示格式为:年月日常用参数:Format(日期格式化)、AllowBlank(是否允许为空)、MaxValue(最大值)、MinValue(最小值)。默认值设置:设置为当前日期为默认值View.Property(p=>p.EffectiveStartTime).DefaultValue(System.DateTime.Today).UseDateEditor()格式化设置:View.Property(p=>p.Property7).UseDateEditor(p=>p.Format="Y/m/d");View.Property(p=>p.Property3).UseDateEditor(p=>p.Format="Y-m-d");日期编辑器时间编辑器3、时间编辑器:UseTimeEditor(),使用该编辑器显示格式为:时分秒常用参数:Format(日期格式化)、AllowBlank(是否允许为空)、MaxValue(最大值)、MinValue(最小值)。格式化设置:View.Property(p=>p.Property7).UseTimeEditor(p=>p.Format="H")View.Property(p=>p.Property3).UseTimeEditor(p=>p.Format="H:m:s")时间编辑器日期范围编辑器4、日期范围编辑器:UseDateRangeEditor()常用参数:DateFormat(格式化)、AllowBlank(是否允许为空)、MaxValue(最大值)、MinValue(最小值)、DateRangeType(日期范围类型)、StartDate(开始日期)、EndDate(结束日期)。使用示例:设置日期范围默认为当前月View.Property(p=>p.UpdateDate).UseDateRangeEditor(p=>p.DateRangeType=ObjectModel.DateRangeType.Month);格式化设置:View.Property(p=>p.UpdateDate).UseDateRangeEditor(p=>{p.DateFormat="Y-m-d";});注意事项:

1、日期范围参数DateRangeType不设置,默认为当天; 2、如果是自定义查询实体实现日期范围的查询,查询实体对应使用日期范围控件的数据类型要设置为日期范围DateRange;日期范围编辑器05引用类型编辑器引用类型编辑器引用类型编辑器使用的是下拉编辑器:UsePagingLookUpEditor()常用参数:AllowBlank(是否允许为空)、DisplayField(显示值)、BindDisplayField(显示绑定的值,通常要与DisplayField一起使用)、DicLinkField(联动字段)、Editable(是否可编辑)、XType(控件的类型)。必须要是引用属性才能使用该编辑器如前面讲的读者管理的类别号关联的是读者分类的信息,读者管理的类别号用下拉列表实现。我们回顾下实现步骤:引用类型编辑器引用类型编辑器使用步骤 1、读者管理的实体添加引用属性,引用属性关联的实体为读者分类使用步骤引用类型编辑器2、在读者分类的实体中配置显示名称,这步不做,会导致下拉选择后无法显示问题使用步骤引用类型编辑器3、在读者分类的界面中配置选择视图,这步不做或者配置的地方不对,会导致下拉选择的数据和列显示异常。使用步骤引用类型编辑器4、在读者管理中使用下拉编辑器。注意:使用modelfirst建模生成的界面配置属性的展示是用的引用属性管理的实体进行下拉关联的,这里要改成用id,这样改的目前是避免N+1查询的问题。使用步骤引用类型编辑器5、效果。使用步骤思考题引用类型编辑器需要根据条件展示数据,应该如何实现?引用属性自定义编辑器的实现说明:引用属性下拉编辑器,项目使用场景较多的就是根据不同的条件展示下拉选择数据,这种需求通过重写数据源,处理数据加载部分即可满足需求。使用步骤: 1、在界面端建一个扩展静态类,类名以Extention结尾,如下:使用步骤引用属性自定义编辑器的实现2、在静态类中实现自定义编辑器方法:

///

<summary>

///打印模板配置-标签模板级联编辑器

///

</summary>

///

<typeparam

name="T">实体类型</typeparam>

///

<param

name="meta">属性视图元数据</param>

///

<param

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

///

<returns>泛型属性视图元数据</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为数据源,即使用编辑器界面对应的实体。符合条件的下拉选择列表的数据,数据类型为EntityList。引用属性自定义编辑器的实现3、后台查询数据库方法的实现:

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;

}使用步骤返回值要主要分页和懒加载的问题Keyword的查询条件要与实体配置条件一致引用属性自定义编辑器的实现4、ViewConfig使用自定义编辑器使用步骤引用属性自定义编辑器的实现5、效果使用步骤06枚举类型编辑器枚举类型编辑器枚举编辑器UseEnumEditor()常用参数:AllowBlank(是否允许为空)。设置默认值及使用:View.Property(p=>p.Type).DefaultValue((int)ItemType.Product).UseEnumEditor()

其中:Type的属性类型必须是枚举,ItemType为枚举,Product为枚举的属性;框架枚举编辑器支持带条件搜索,使用如下:

View.Property(p=>p.Type).UseEnumEditor("CriteriaEntity");枚举类型编辑器07图片编辑器图片编辑器图片编辑器UseImageComponentEditor()说明:框架图片编辑器只能在表单中使用,列表使用不生效;使用图片编辑器的属性类型只能是byte[];图片编辑器虽然有参数Width(宽)、Height(高)等这些,但是一般我们在ShowInDetail中设置相应的参数效果会好些。图片编辑器08Bool类型编辑器Bool类型编辑器复选框编辑器UseCheckEditor():框架bool类型默认的编辑器常用参数:AllowBlank(是否允许为空)、Editable(是否可编辑)。使用:View.Property(p=>p.Check).UseCheckEditor();布尔下拉编辑器UseCheckDropDownEditor()常用参数:AllowBlank(是否允许为空)、Editable(是否可编辑)。使用:

View.Property(p=>p.Check).UseCheckDropDownEditor();Bool类型编辑器09快码编辑器框架快码功能介绍快码可以理解为是动态的枚举或者是数据字典,在SMOM平台中,做了一个快码的功能包含主表和从表,用于维护这些基础数据,主表的数据不能在界面维护,需要在程序中实现或者是在数据库中处理,从表的数据可在界面中维护;而框架做的快码编辑器就是通过快码主表的编码做查询条件,将满足条件的明细数据筛选出来展示在快码下拉编辑器中。框架快码功能介绍快码的应用场景控制逻辑标识:使用快码可以对复杂的逻辑结构进行标识和记录,方便对其进行维护和修改;生产过程监控:使用快码可以方便标识并追踪生产流程中的各个环节和产出物的信息,从而提高生产效率和质量;需求调研和功能设计阶段,对一些类型的分类不明确或者是分类较多的,使用枚举开发这类需求会存在反复改代码的问题;如果所有这类需求都用基础数据界面维护,功能开发会较多且不利于维护数据;基于这种场景考虑,框架引入了快码这个功能,专门处理这种场景的业务需求。快码的应用场景快码功能主表数据的添加从快码功能菜单可以看出,快码主表的数据是不能在界面中进行维护的,而快码编辑器获取的是对应主表下的所有明细数据。所以我们在使用编辑器之前要先将快码主表的数据维护起来。主表数据的维护提供两种方式: 1、通过数据库脚本的方式执行:这种方式必须掌握; 2、在程序中通过程序添加数据:这种方式要清楚原理,能看懂代码。快码功能主表数据的添加快码功能主表数据的添加快码和快码明细对应的表

快码主表名:BD_CATALOG_TYPE;快码明细表名:BD_CATALOGOracle执行脚本:insertintoBD_CA

温馨提示

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

评论

0/150

提交评论