EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

属性编辑器

eXpressApp Framework附带了一组不同的属性编辑器,它们涵盖了大多数数据管理方案(请参阅内置编辑器支持的数据类型)。此外,对于内置编辑器不适合您的情况,eXpressApp Framework支持使用自定义属性编辑器。本主题描述了内置的属性编辑器,并详细说明了如何实现自定义编辑器。eXpressApp框架随附的FeatureCenter演示的“属性编辑器”部分中演示了几个自定义的属性编辑器。默认情况下,此演示位于%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ FeatureCenter文件夹中。

注意

要显示静态信息或任何未绑定到属性的控件,请实现一个“查看项”,而不是“属性编辑器”。请参阅“如何:实施视图项目”主题以了解如何执行此操作。

您可能出于以下原因之一考虑实现自定义属性编辑器:

  • 自定义内置的属性编辑器的控件功能。

    内置的XAF属性编辑器使用XtraEditors和ASPxEditors Suites提供的控件。这些控件支持许多功能,可以轻松地根据自己的喜好进行自定义。采用这些功能的一种方法是访问内置的Property Editor控件属性并对其进行修改(请参见Access Editor设置)。但是,如果需要重用自定义控件,则应通过从内置控件继承来实现自定义属性编辑器。

  • 利用第三方控件。

    如果您有控件要在应用程序中进行数据编辑,则唯一的方法是实现自定义属性编辑器。

  • 支持自定义数据类型的管理。

    例如,如果您具有Coord类型的业务类属性,则应实现自定义属性编辑器以显示该属性。

  • 特定的数据管理情况。

    例如,您可能需要实现具有自定义数据源访问权限的自定义属性编辑器。

要实现自定义属性编辑器,请从PropertyEditor类或其多个后代之一继承。

属性编辑器图

要了解用作属性编辑器基类的类,请参见下表。

基类 描述
属性编辑器 实现平台无关的属性编辑器功能。如果需要为XAF内部不支持的平台开发属性编辑器,请从此类继承。在其他情况下,请使用以下类之一。
WinPropertyEditorWebPropertyEditorMobilePropertyEditor 要使用自定义控件来实现Windows,Web或移动属性编辑器,请继承这些类。若要创建所需的控件,请重写CreateControlCore方法以及特定于WebPropertyEditor和MobilePropertyEditor后代的CreateEditModeControlCoreCreateViewModeControlCore方法。
DXPropertyEditor 此类包含使用XtraEditors控件所需的基本功能。您可以重写两个方法:CreateControlCoreCreateRepositoryItem。前者创建一个XtraEditors控件以在“详细信息视图”中使用。后者为代表列表视图的XtraGrid控件创建一个存储库项目。该SetupRepositoryItem方法也可以被覆盖,以调整所共有的结合到网格列的存储库项目的属性,和一个XtraEditors控制在一个局部视图中。有关XtraEditors控件和“存储库项目”概念的更多信息,请参考XtraEditors
BooleanPropertyEditor,StringPropertyEditor等 这些类派生自DXPropertyEditor类,以使用特定的数据类型。从这些类继承以添加所需的特定功能。
ASPxPropertyEditor 此类包含使用ASPxGridView和Editors库中的编辑器所需的基本功能。您可以覆盖CreateEditModeControlCoreCreateViewModeControlCore方法,以分别在明细视图处于编辑模式和视图模式时创建要使用的控件。
ASPxBooleanPropertyEditor,ASPxStringPropertyEditor等 这些类派生自ASPxPropertyEditor类,以使用特定的数据类型。从这些类继承以添加所需的特定功能。
MobileBooleanPropertyEditor,MobileStringPropertyEditor等 这些类派生自MobilePropertyEditor类,以使用特定的数据类型。从这些类继承以添加所需的特定功能。

要在UI中使用自定义属性编辑器,必须将其加载到Application Model。在实现的属性编辑器模块项目,并与标PropertyEditorAttribute被自动加载到应用模式。使用模型编辑器,可以选择“属性编辑器”作为“视图” | “视图”的值。<DetailView> | 物品| <PropertyEditor>节点的PropertyEditorType属性。

另外,可以使用ViewItems | | Property | Property选择该属性编辑器作为特定类型属性的默认编辑器。属性编辑器| < PropertyEditor >节点的EditorType属性。

属性编辑器属性指定您的属性编辑器是专为只有特定的数据类型。该属性具有多个参数,因此,您具有以下选项。

  • 您可能希望为特定数据类型的属性自动设置属性编辑器。在这种情况下,将所需的数据类型作为属性的参数传递。结果,将EditorType属性设置为应用程序模型的ViewItems |属性编辑器类型。属性编辑器| < PropertyEditor >节点,用于定义作为参数传递的数据类型。属性编辑器将用作该数据类型的属性的默认编辑器。请注意,如果存在另一个使用带有相同参数的属性的属性编辑器,则您的属性编辑器可能不会自动用作默认编辑器。
  • 您为特定的数据类型实现了额外的属性编辑器,但是您不希望为该数据类型的属性自动设置它。但是,您需要能够在需要时为属性设置它。在这种情况下,将所需的数据类型作为第一个属性参数传递;和false作为第二个属性参数。在这种情况下,您的“属性编辑器”将被添加到可用于指定数据类型的属性的编辑器列表中。
  • 如果您不传递任何类型作为属性的参数,则产生的行为将好像您根本没有应用该属性一样。上面详细介绍了此行为。

在某些情况下,您可以具有应在“详细视图”中可视化的对象,而不是使用一组标准的“属性编辑器”,而是使用特定的控件。在这种情况下,请基于控件创建自定义属性编辑器,并在目标业务类中声明其他属性。此属性应返回其包含对象的实例。要从列表视图中隐藏属性,请使用VisibleInListViewAttribute装饰它。自定义“详细信息视图”布局以隐藏除自定义“属性编辑器”以外的所有“属性编辑器”。

public class MyBusinessClass : BaseObject {
    //...
    [VisibleInListView(false)]
    public MyBusinessClass Self {
        get { return this; }
    }
}

这样,将使用“列表视图”中的一组属性来显示您的对象,而“细节视图”中的对象将使用特定的控件来可视化。

以下主题更详细地说明了不同的自定义“属性编辑器”实现案例。

相关文章

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