EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

引用(外键,复杂类型)属性

引用属性是添加到应用程序模型中的类型的属性(当属性类型是持久性或非持久性业务类时)。引用属性(和Collection属性)使您可以设置业务对象之间的关系。在XAF中,参考属性可以显示在下面:

  • 查找控件;
  • 一组编辑器。每个编辑器都显示一个单独的引用对象属性。
  • 表示引用对象的详细信息视图的详细信息属性编辑器(仅WinForms和ASP.NET应用程序);
  • 按钮编辑器,用于在单独的模式窗口(通常用于聚合的对象)中展开引用的对象的“详细信息视图”。

下图演示了如何在不同平台上显示参考属性:

注意

请参阅属性编辑器| XAF随附的Feature Center演示中的“参考属性”部分,以查看实际使用的“参考属性编辑器”。默认情况下,Feature Center演示安装在%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ FeatureCenter中。该演示的ASP.NET版本可从http://demos.devexpress.com/XAF/FeatureCenter/在线获得。

例子

用户界面无关的属性编辑器,用于参考属性

DetailPropertyEditor

DetailPropertyEditor创建一个模板代表一个框架,并包含详细信息视图。根据对象类型自动确定明细视图,并显示参考属性指定的对象。要指定自定义的详细视图,请在模型编辑器中使用IModelMemberViewItem.View属性。

以下控件将DetailPropertyEditor可视化:

平台 控制
WinForms NestedFrameTemplateV2
ASP.NET NestedFrameControlNew
移动的 MobileWindowTemplate

WinForms属性编辑器的参考属性

每个WinForms属性编辑器都有一个控件,该控件在Detail View中显示相应的属性,还有一个存储库项目,它在支持就地编辑的List Editor中显示一个属性。控件和存储库项目均显示如下。

编辑 控制 储存库项目
ObjectPropertyEditor ObjectEdit - IntegerPropertyEditor使用的ButtonEdit编辑器后代。 RepositoryItemObjectEdit -XtraEditors库的RepositoryItemButtonEdit项的后代。
LookupPropertyEditor LookupEdit - XtraEditors库的PopupContainerEdit编辑器的后代。 RepositoryItemLookupEdit -XtraEditors库的RepositoryItemPopupContainerEdit项的后代。

ObjectPropertyEditor

所述ObjectPropertyEditor显示聚集的参考特性。单击编辑器的按钮,双击编辑器,或按空格键将调用“详细视图”。您可以在此详细信息视图中修改引用的对象,然后单击“确定”以保存更改。请参阅“将操作添加到弹出窗口对话框控制器”主题,以获取有关如何自定义此窗口的详细信息。

提示

您可以聚焦ObjectPropertyEditor并按SPACEBARENTER调用ObjectPropertyEditor的Detail View。

LookupPropertyEditor

所述LookupPropertyEditor显示非聚集的参考性质,并提供一个下拉与列表LookupControlTemplate 模板。您可以从此列表中选择一个对象,并将其分配给当前引用属性。

提示

LookupPropertyEditor热键

快捷键 描述
ALT DOWN 展开下拉列表。
Ctrl Shift 单击 为下拉列表中的选定对象调用详细信息视图。

参考属性的ASP.NET属性编辑器

每个ASP.NET属性编辑器都有一些控件,这些控件可以在Detail View的View和Edit模式下显示属性(请参见DetailView.ViewEditMode)。这些控件在下面列出。

编辑 查看模式控制 编辑模式控制
ASPxObjectPropertyEditor 链接按钮 XafASPxButtonEdit-一个ASPxButtonEdit编辑器后代。
ASPxGridLookupPropertyEditor 链接按钮 ASPxGridLookup
ASPxLookupPropertyEditor 链接按钮 ASPxLookupDropDownEditASPxLookupFindEdit

ASPxObjectPropertyEditor

所述ASPxObjectPropertyEditor显示聚集参考属性。此属性编辑器继承了ASPxObjectPropertyEditorBase类,该类创建一个Link按钮,一个NavigateToObject Action并在用户单击Link时引发该Action的Execute事件。在执行事件处理程序调用一个单独的窗口,显示对象的只读详细查看当前属性引用。

ASPxObjectPropertyEditor创建ButtonEditObjectWindow PopupWindowShowAction并提高该操作的执行按钮被点击时的事件。在Execute事件处理程序中调用一个单独的窗口,该窗口显示一个详细视图,该视图表示属性引用的对象。单击“确定”保存对对象所做的更改,并将其分配给属性(如果未分配)。有关如何自定义调用的窗口的详细信息,请参阅将操作添加到弹出窗口对话框控制器主题。

ASPxObjectPropertyEditor不是设计时,其弹出控制在关闭更新其他编辑联编辑模式,所以ImmediatePostDataAttribute并不影响它。

ASPxGridLookupPropertyEditor

用于非汇总参考属性。

此属性编辑器继承了ASPxObjectPropertyEditorBase类,该类创建一个LinkBut​​ton和一个NavigateToObject 简单Action,并在用户单击链接按钮时引发该Action的Execute事件。在执行事件处理程序创建,显示所引用对象的只读详细查看的窗口。

使用ASPxGridLookupPropertyEditor,用户可以使用“添加”和“编辑”按钮来创建和修改引用的对象。“清除”按钮清除编辑器值。要隐藏此按钮,请在“模型编辑器”中将IModelCommonMemberViewItem.AllowClear属性设置为False

ASPxGridLookupPropertyEditor使用默认查找列表视图的应用模式设置(ObjectName_LookupListView)或查看IModelMemberViewItem.View属性指定。要指定哪些列在ASPxGridLookupPropertyEditor中可见,请在模型编辑器中找到相应的列表视图的“列”节点(例如,View | Contact_LookupListView | Columns)并更改列列表。

ASPxGridLookupPropertyEditor显示属性的值IModelCommonMemberViewItem.LookupProperty模型选项指定,默认情况下。您可以使用IModelCommonMemberViewItem.DisplayFormat属性设置显示值的格式。设置显示值格式时,可以使用格式说明符和属性名称。例如,{0:FirstName}{0:Birthday:MM.yyyy}{0:Manager.Birthday}。此格式也可以在“视图”编辑模式下使用。底层ASPxGridLookup控件的TextFormatStringDisplayFormatString属性取决于DisplayFormat属性值。因此,DisplayFormat属性确定哪些查找列参与增量过滤

ASPxGridLookupPropertyEditor的特性

  • ASPxGridLookupPropertyEditor不会创建嵌入式网格操作(例如,编辑操作)。
  • ASPxGridLookupPropertyEditor不支持数据源中不存在的对象。
  • 查找列表视图的EditorType值应设置为ASPxGridListEditor类型。否则,将发生运行时异常。
  • 属性类型应具有一个关键字段。底层的ASPxGridLookup控件需要一个用于编辑和选择操作的关键字段。否则,将发生运行时异常。

刷新ASPxGridLookupPropertyEditor的数据源

在某些情况下,应刷新ASPxGridLookupPropertyEditor的数据源。例如,当您为查找“列表视图”实现级联过滤器时。要刷新此数据源,请使用PropertyEditor.RefreshViewItem.RefreshViewItem.RefreshDataSource方法。下面的Controller演示了如何执行此操作,在更改Department属性后,将刷新Manager属性编辑器的数据源。

using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Web.Editors.ASPx;
// ...
public class RefreshDataSourceController : ObjectViewController<DetailView, Contact> {
    protected override void OnActivated() {
        base.OnActivated();
        View.ObjectSpace.ObjectChanged  = ObjectSpace_ObjectChanged;
    }
    private void ObjectSpace_ObjectChanged(object sender, ObjectChangedEventArgs e) {
        if(e.PropertyName != "Department") return;
        ASPxGridLookupPropertyEditor lookup = View.FindItem("Manager") as ASPxGridLookupPropertyEditor;
        if(lookup != null) {
            lookup.RefreshDataSource();
        }
    }
    protected override void OnDeactivated() {
        View.ObjectSpace.ObjectChanged -= ObjectSpace_ObjectChanged;
        base.OnDeactivated();
    }
}

ASPxLookupPropertyEditor

所述ASPxLookupPropertyEditor显示非聚集的参考特性。

此属性编辑器继承ASPxObjectPropertyEditorBase类,该类创建链接按钮和NavigateToObject SimpleAction,并在用户单击链接按钮时引发Action的Execute事件。在执行事件处理程序创建,显示所引用对象的只读详细查看的窗口。用户可以使用“清除”按钮清除编辑器值。若要隐藏此按钮,请在“模型编辑器”中将IModelCommonMemberViewItem.AllowClear属性设置为False

所述ASPxLookupPropertyEditor创建ASPxLookupFindEditASPxLookupDropDownEdit控制。该ASPxLookupFindEdit控制在下列情况下产生的,当启用了搜索功能

  • 当显示的记录数超过IModelOptions.LookupSmallCollectionItemCount值时;
  • BOModel | 班级| 成员意见| <DetailView> | 物品| <PropertyEditor>节点的LookupEditorMode属性设置为AllItemsWithSearchSearch

否则,ASPxLookupPropertyEditor将创建ASPxLookupDropDownEdit控件。

访问ASPxLookupPropertyEditor的内部控件

您可以使用ASPxLookupPropertyEditor类的DropDownEdit和FindEdit属性访问ASPxLookupDropDownEditASPxLookupFindEdit控件。这些属性提供对内部ASPxComboBox和ASPxButtonEdit控件的访问,可以分别通过DropDown和Editor属性访问这些控件。

using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Web.Editors.ASPx;
using DevExpress.Web;
// ...
public class InitializeLookupControlsController : ObjectViewController<DetailView, Contact> {
    protected override void OnActivated() {
        base.OnActivated();
        ASPxLookupPropertyEditor managerEditor = View.FindItem("Manager") as ASPxLookupPropertyEditor;
        if(managerEditor != null) {
            if(managerEditor.Control == null) {
                managerEditor.ControlCreated  = managerEditor_ControlCreated;
            }
            else {
                InitializeLookupControls(managerEditor);
            }
        }
    }
    private void managerEditor_ControlCreated(object sender, EventArgs e) {
        InitializeLookupControls(((ASPxLookupPropertyEditor)sender));
    }
    private void InitializeLookupControls(ASPxLookupPropertyEditor lookupEditor) {
        if(lookupEditor.FindEdit != null) {
            ASPxButtonEdit buttonEdit = lookupEditor.FindEdit.Editor;
            // ... 
        }
        if(lookupEditor.DropDownEdit != null) {
            ASPxComboBox comboBox = lookupEditor.DropDownEdit.DropDown;
            // ... 
        }
    }
}

参考属性的移动属性编辑器

每个Mobile Property Editor都有一些小部件,它们以Detail View的View和Edit模式显示属性(请参见DetailView.ViewEditMode)。这些小部件在下面列出。

编辑 查看模式控制 编辑模式控制 描述
MobileObjectPropertyEditor 使用div HTML元素显示文本的标签。 使用dxButton小部件的按钮。 显示汇总的参考属性。
MobileLookupPropertyEditor 使用div HTML元素显示文本的标签。 使用dxLookup小部件的查找。 显示未汇总的参考属性。
注意

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