EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:显示非持久对象的详细信息视图

在导航中显示非持久对象

  1. 声明一个非持久类,将DomainComponentAttribute应用于它,并添加一个对象键属性

    using DevExpress.ExpressApp.DC;
    // ...
    [DomainComponent]
    public class NonPersistentObject {
        [Browsable(false)]
        [DevExpress.ExpressApp.Data.Key]
        public int Oid { get; set; }
        public string Name { get; set; }
    }
    
    注意

    INotifyPropertyChanged的IXafEntityObjectIObjectSpaceLink接口实现在本实施例中被略去。但是,建议在实际应用程序中支持这些接口(请参阅业务类非持久对象中的PropertyChanged事件)。

  2. 重建解决方案。
  3. 运行模块项目的模型编辑器,并添加一个新的导航项。请注意,移动应用程序仅显示默认导航组内容。将IModelNavigationItem.View属性设置为要显示的详细视图的标识符(例如NonPersistentObject_DetailView)。将IModelNavigationItem.ObjectKey属性设置为任意整数值。请注意,如果要显示此类型的不同非持久对象,则此值应该是唯一的。

    非持久密钥

  4. 在C#/ VB编辑器中打开WinApplication.csWinApplication.vb),WebApplication.csWebApplication.vb)和/或MobileApplication.csMobileApplication.vb)文件。确保NonPersistentObjectSpaceProvider已在重写的CreateDefaultObjectSpaceProvider方法中注册(除了现有的XPObjectSpaceProviderEFObjectSpaceProvider之外)。该解决方案向导会自动添加该代码。请注意,如果您在较旧的XAF版本中创建了项目,则该代码可能会丢失。

    protected override void CreateDefaultObjectSpaceProvider(CreateCustomObjectSpaceProviderEventArgs args) {
        // ...
        args.ObjectSpaceProviders.Add(new NonPersistentObjectSpaceProvider(TypesInfo, null));
    }
    
  5. 创建一个WindowController后代并处理NonPersistentObjectSpace.ObjectByKeyGetting事件。在事件处理程序中,使用在上一步中指定的键来获取预定义的非持久对象的实例。

    using DevExpress.ExpressApp;
    // ...
    public class NonPersistentObjectsController : WindowController {
        private void Application_ObjectSpaceCreated(object sender, ObjectSpaceCreatedEventArgs e) {
            NonPersistentObjectSpace nonPersistentObjectSpace = e.ObjectSpace as NonPersistentObjectSpace;
            if(nonPersistentObjectSpace != null) {
                nonPersistentObjectSpace.ObjectByKeyGetting  = nonPersistentObjectSpace_ObjectByKeyGetting;
            }
        }
        private void nonPersistentObjectSpace_ObjectByKeyGetting(object sender, ObjectByKeyGettingEventArgs e) {
            if(e.ObjectType.IsAssignableFrom(typeof(NonPersistentObject))) {
                if(((int)e.Key) == 138) {
                    NonPersistentObject obj138 = new NonPersistentObject();
                    obj138.Key = 138;
                    obj138.Name = "Sample Object";
                    e.Object = obj138;
                }
            }
        }
        protected override void OnActivated() {
            base.OnActivated();
            Application.ObjectSpaceCreated  = Application_ObjectSpaceCreated;
        }
        protected override void OnDeactivated() {
            base.OnDeactivated();
            Application.ObjectSpaceCreated -= Application_ObjectSpaceCreated;
        }
        public NonPersistentObjectsController() {
            TargetWindowType = WindowType.Main;
        }
    }
    

    要为每个详细信息视图创建一个新的非持久对象,请在上一步将ObjectKey值保留为空,然后创建以下视图控制器:

    using DevExpress.ExpressApp;
    // ...
    public class NonPersistentObjectActivatorController : ObjectViewController<DetailView, NonPersistentObject> {
        protected override void OnActivated() {
            base.OnActivated();
            if ((ObjectSpace is NonPersistentObjectSpace) && (View.CurrentObject == null)) {
                View.CurrentObject = View.ObjectTypeInfo.CreateInstance();
                View.ViewEditMode = DevExpress.ExpressApp.Editors.ViewEditMode.Edit;
            }
        }
    }
    

    该控制器使用默认对象的构造函数创建一个新实例。您还可以将参数传递给CreateInstance(Object [])方法以使用另一个构造函数。

在仪表板视图中显示非持久对象

要在DashboardView中显示非持久对象,请按照上一节中的步骤操作,并创建一个仪表板项目而不是导航项目。有关详细视图如何绑定到“仪表板视图”项的信息,请参考DashboardView类说明。

在模态对话框窗口中显示非持久对象

  1. 实现PopupWindowShowAction操作。
  2. 处理其PopupWindowShowAction.CustomizePopupWindowParams事件。
  3. 在事件处理程序中:

请参阅的方式来表达一个视图方式来表达一个确认对话框的更多信息和示例主题。

显示业务类中的非持久对话框

要执行简单的业务逻辑,并提示用户输入参数,使用ActionAttribute如图中如何创建一个动作使用动作属性话题。

相关文章

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