EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:使用导航控件创建新对象

本主题演示如何在特定的导航项目单击上执行自定义代码。在“编辑”模式下为“问题”对象调用“详细信息视图”的导航项已添加到“导航”控件。

CreateObjectFromNavigationControl

提示

可在http://www.devexpress.com/example=E236的DevExpress代码示例数据库中找到完整的示例项目。

在此示例中,以下Issue持久类用于演示目的。您可以使用任何其他持久性类。

using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Xpo;
// ...
[DefaultClassOptions, ImageName("BO_List")]
public class Issue : BaseObject {
    public Issue(Session session) : base(session) { }
    private string subject;
    public string Subject {
        get { return subject; }
        set { SetPropertyValue(nameof(Subject), ref subject, value); }
    }
    private string description;
    [Size(SizeAttribute.Unlimited)]
    public string Description {
        get { return description; }
        set { SetPropertyValue(nameof(Description), ref description, value); }
    }
}

要使用“导航”控件创建新对象,请添加一个新的导航项目指定要在该项目上执行的代码,然后单击“确定”

添加一个新的导航项

要添加新的导航项,请通过双击Model.DesignedDiffs.xafml文件为模块项目调用模型编辑器。找到“问题”导航项节点,然后将新节点添加到相同的导航组。

对于此节点,在下表中使用相应的值指定属性:

财产 价值
IModelBaseChoiceActionItem.Id 新问题
IModelBaseChoiceActionItem.Caption 创建新问题...
IModelBaseChoiceActionItem.ImageName 动作_新
IModelNavigationItem.View Issue_DetailView

CreateObjectFromNavigationControl_ME

注意

对于移动应用程序,请勿将StartupNavigationItem属性设置为此导航项,因为它们不支持在应用程序启动时显示的详细视图。

请参阅将项目添加到导航控件主题,以了解有关在模型编辑器中创建导航项目的更多信息。

指定要在导航项目上执行的代码单击

要指定单击“创建新问题...”导航项时要执行的代码,请按照以下步骤操作:

  1. 创建一个作为WindowController子孙的Controller ,重写OnActivated方法,并订阅此方法中的ShowNavigationItemController.CustomShowNavigationItem事件。使用Frame.GetController <ControllerType>方法访问ShowNavigationItemController实例。
  2. CustomShowNavigationItem事件处理程序中,使用CustomShowNavigationItemEventArgs.ActionArguments事件参数访问当前的导航项标识符。
  3. 如果标识符为“ NewIssue”,请使用下表中的相应方法创建以下对象:

    目的 方法
    对象空间 XafApplication.CreateObjectSpace
    发行对象 IObjectSpace.CreateObject
    问题对象的详细信息视图 XafApplication.CreateDetailView
  4. 将详细信息视图的DetailView.ViewEditMode属性设置为ViewEditMode.Edit,并指定应使用ShowViewParameters.CreatedView属性显示此视图。
  5. 由于导航控件仅显示在主窗口中,因此也应通过在Controller的构造函数中将WindowController.TargetWindowType属性设置为Main来为主窗口激活创建的Controller 。
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.SystemModule;
// ...
public class NewObjectFromNavigationController : WindowController {
    public NewObjectFromNavigationController() {
        TargetWindowType = WindowType.Main;
    }
    protected override void OnActivated() {
        base.OnActivated();
        ShowNavigationItemController showNavigationItemController = Frame.GetController<ShowNavigationItemController>();
        showNavigationItemController.CustomShowNavigationItem  = showNavigationItemController_CustomShowNavigationItem;
    }
    void showNavigationItemController_CustomShowNavigationItem(object sender, CustomShowNavigationItemEventArgs e) {
        if (e.ActionArguments.SelectedChoiceActionItem.Id == "NewIssue") {
            IObjectSpace objectSpace = Application.CreateObjectSpace(typeof(Issue));
            Issue newIssue = objectSpace.CreateObject<Issue>();
            DetailView detailView = Application.CreateDetailView(objectSpace, newIssue);
            detailView.ViewEditMode = DevExpress.ExpressApp.Editors.ViewEditMode.Edit;
            e.ActionArguments.ShowViewParameters.CreatedView = detailView;
            e.Handled = true;
        }
    }
}

运行WinForms,ASP.NET或Mobile应用程序,以检查是否可以使用“创建新问题...”导航项来创建“问题”对象(请参阅本主题开头的图像)。

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