EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

从业务类库类(XPO)继承

在本课程中,您将学习如何使用Business Class Library为您的应用程序实现业务类。该库包含最典型的即用型业务类。您将派生自该库中可用的Person类,以实现自定义Contact类,并实现几个其他属性。您还将学习基于数据的自动用户界面构建的基础。

  • 通常,应该在与平台无关的模块项目中实现业务类,以便在WinForms和ASP.NET应用程序中都可以使用相同的对象。为了简化XAF特定类的实现,提供了几个Visual Studio模板。在本课程中,您将使用XPO Business Object模板来实现持久性业务类。右键单击MySolution.Module项目中的“业务对象”文件夹,然后选择“添加DevExpress项”。New Item ...调用Template Gallery。然后选择XAF Business Object | XAF。XPO业务对象模板,指定将Contact.cs作为新项目的名称,然后按添加项目。结果,您将获得带有单个类声明的自动生成的代码文件。

    TemplateGalery_XPO

    自动生成的Contact类是BaseObject类的后代,它是基本持久性类之一。当需要从头实现持久类时,您应该继承这些类之一,或者使用业务类库类(也从BaseObject类派生)。有关业务类概念的一般概述,请参阅“业务类与数据库表”主题。

  • 用以下代码替换自动生成的类声明。

    [DefaultClassOptions]
    public class Contact : Person {
        public Contact(Session session) : base(session) { }
        private string webPageAddress;
        public string WebPageAddress {
            get { return webPageAddress; }
            set { SetPropertyValue(nameof(WebPageAddress), ref webPageAddress, value); }
        }
        private string nickName;
        public string NickName {
            get { return nickName; }
            set { SetPropertyValue(nameof(NickName), ref nickName, value); }
        }
        private string spouseName;
        public string SpouseName {
            get { return spouseName; }
            set { SetPropertyValue(nameof(SpouseName), ref spouseName, value); }
        }
        private TitleOfCourtesy titleOfCourtesy;
        public TitleOfCourtesy TitleOfCourtesy {
            get { return titleOfCourtesy; }
            set { SetPropertyValue(nameof(TitleOfCourtesy), ref titleOfCourtesy, value); }
        }
        private DateTime anniversary;
        public DateTime Anniversary {
            get { return anniversary; }
            set { SetPropertyValue(nameof(Anniversary), ref anniversary, value); }
        }
        private string notes;
        [Size(4096)]
        public string Notes {
            get { return notes; }
            set { SetPropertyValue(nameof(Notes), ref notes, value); }
        }
    }
    public enum TitleOfCourtesy { Dr, Miss, Mr, Mrs, Ms };
    

    如您所见,Contact类的祖先从BaseObject更改为Person,并且实现了一些自定义属性。请注意,属性构造器中使用了Contact构造函数和SetPropertyValue方法。这些是XAF使用的eXpress持久对象(XPO)对象关系映射器的细节。有关详细信息,请参阅XPO最佳实践知识库文章和XPO文档中的“简化属性语法”主题。

    请注意DefaultClassOptionsAttribute属性的使用。在本教程中,此属性意味着以下功能将可用于Contact业务类。

    • 联系人的项目将被添加到主窗体的导航控制。单击此项目时,将显示一个列表视图。该列表视图表示联系人类型的对象的列表。
    • 当其他类型的对象显示在列表视图中时,“联系人”项将被添加到“新建”new_dropdown_btn)按钮的子菜单中。单击此项以调用“联系人详细信息”表单并创建一个新的Contact对象。
    • 联系人对象将作为数据源生成的报告中提供(请参阅创建在Visual Studio中报告)。

    要分别应用这些选项,请使用NavigationItemAttributeCreatableItemAttributeVisibleInReportsAttribute属性。

    注意

    如果安装了CodeRush,则可以在实现业务类时使用代码模板。使用代码模板可减少代码创建时间,因为它有助于避免手动键入整个代码,并使您只需几次击键即可创建常规代码部分。要了解eXpress持久对象的内置代码模板,请参阅XPO和XAF模板主题。

  • 运行WinForms或ASP.NET应用程序。您将看到如何使用指定的数据结构自动生成用户界面。将有一个导航控件,使您可以显示联系人列表。您将能够使用相应的编辑器来自定义此集合。如果单击“新建”按钮或双击现有记录,则应用程序将显示一个详细信息表单(Detail View),其中填充了每个数据字段的编辑器。

    下图演示了WinForms应用程序中的“详细信息”视图和“列表”视图。

    Tutorial_BMD_Lesson2_2

    注意,许多元素是在很短的时间内就以直观的方式生成的。为数据字段创建了适当的编辑器,并且在网格控件中使用了适当的编辑器来显示数据。请注意,已经为“礼貌的标题”(枚举器)创建了一个组合框编辑器。另请注意,标题已自动从驼峰式转换为空格分隔的字符串,表单标题也已自动更新,等等。

    您可以使用网格功能显示,隐藏和重新排列列,以及在运行时对列表视图进行分组,过滤和排序。在WinForms应用程序中,您可以根据需要在运行时自定义详细信息表单上的编辑器布局。为此,右键单击空白处,然后选择“自定义布局”。现在,您可以将编辑器移至所需位置。若要了解如何在设计时自定义编辑器布局,请参阅“自定义视图项目布局”主题。此外,您可以参考“查看项目布局自定义”和“列表视图列生成”主题,以了解如何生成默认的“详细视图”布局和默认的“列表视图”列集。

您可以在MySolution.Module |中看到此处演示的代码。业务对象| XAF随附的Main Demo的Contact.csContact.vb)文件。该MainDemo应用程序安装在%PUBLIC%\文件\ DevExpress的演示19.2 \组件\ eXpressApp框架\ MainDemo默认。可从http://demos.devexpress.com/XAF/MainDemo/在线获得ASP.NET版本。

下一课: 提供初始数据(XPO)

相关文章

转载保留此链接,注明出处