EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

添加简单操作

在本课程中,您将学习如何创建简单动作。为此,将实现一个新的View Controller并将一个新的Simple Action添加到其中。该操作将清除特定联系人的所有跟踪任务

注意

在继续之前,请花一点时间回顾以下课程。

  • 继承自业务类库类XPO / EF
  • 实施自定义业务类和参考属性XPO / EF
  • 设置多对多关系XPO / EF

View Controller是ViewController类的后代。要添加提供简单操作的View Controller,请执行以下步骤。

  1. XAF控制器| View Controller Visual Studio模板使向您的应用程序添加View Controller变得更加容易。在“解决方案资源管理器”中,右键单击MySolution.Module项目中的Controllers文件夹,然后选择“添加DevExpress项目”。New Item ...调用模板库。然后选择“视图控制器”,将ClearContactTasksController指定为新项目的名称,然后单击“添加项目”。结果,您将获得一个自动生成的ClearContactTasksController.cs(ClearContactTasksController.vb)文件和一个View Controller声明。

    Tutorial_EF_Lesson1_1

  2. 默认情况下,新控制器将在任何类型的视图中激活。由于本课的任务是清除“详细视图”中的“跟踪的任务”,因此应更改默认行为。右键单击MySolution.Module | 控制器| ClearContactTasksController.csClearContactTasksController.vb)文件,然后选择“视图设计器”以调用该设计器。

    Controller_Designer

  3. 在控制器的“属性”窗口中,将TargetViewType属性设置为DetailView。因此,将仅以详细信息形式激活控制器。

    Tutorial_EF_Lesson1_2

    注意

    通过在控制器的构造函数中将ViewController.TargetViewType属性设置为ViewType.DetailView,可以在代码中完成相同的自定义。如果在调用InitializeComponent方法之后设置了属性值,则Designer设置将被覆盖。

    或者,您可以实现通用的ViewController <ViewType>控制器而不是ViewController,并在ViewType通用参数中指定应为其激活该Controller的视图的类型。

  4. 接下来,将SimpleAction添加到ClearContactTasksController。在DX中。19.2在“工具箱”中的“ XAF操作”部分,将SimpleAction拖到设计器中。

    Tutorial_EF_Lesson1_2_1

  5. 在属性窗口SimpleAction,设置名称ID属性“ClearTasksAction”的类别属性为“查看”,将ImageName属性为“Action_Clear”和标题属性设置为“清除任务”。将ConfirmationMessage属性设置为“确定要清除“任务”列表吗?”。

    Tutorial_EF_Lesson1_1_0

    注意

    类别属性指定到当前操作所属的操作组。一组中的所有动作将在UI中顺序显示。

    ImageName属性指定的动作在界面按钮的图标。您可以使用标准的图像中的一个导入自己的

  6. SimpleAction被设计当最终用户点击它来执行特定代码。要清除当前Person的Tasks集合并刷新视图,请实现操作的Execute事件处理程序。切换到“属性”窗口中的“事件”视图,双击“执行”事件,然后将以下代码添加到自动生成的事件处理程序中。

    实体框架

    using MySolution.Module.BusinessObjects;
    //...
    private void ClearTasksAction_Execute(Object sender, SimpleActionExecuteEventArgs e) {
        ((Contact)View.CurrentObject).Tasks.Clear();
        ((DetailView)View).FindItem("Tasks").Refresh();
        ObjectSpace.SetModified(View.CurrentObject);
    }
    

    eXpress持久对象

    using MySolution.Module.BusinessObjects;
    //...
    private void ClearTasksAction_Execute(Object sender, SimpleActionExecuteEventArgs e) {
        while(((Contact)View.CurrentObject).Tasks.Count > 0) {
            ((Contact)View.CurrentObject).Tasks.Remove(((Contact)View.CurrentObject).Tasks[0]);
        }
        ObjectSpace.SetModified(View.CurrentObject);
    }
    
  7. 在ASP.NET Web应用程序中,有两种显示详细视图的模式-视图模式和编辑模式。仅当在“编辑”模式下显示“详细视图”时,“ ClearTasks操作”才可用,因此请检查当前“详细视图”的编辑模式是否已更改。如果已更改为“查看”模式,则应禁用“操作”。要实现此目的,您应该查看以下概念。

    • 详细信息视图公开DetailView.ViewEditModeChanged事件,该事件在更改编辑模式时触发。
    • 该Action公开了ActionBase.Enabled属性,该属性不是简单的布尔属性,而是用于确定Action的启用状态的键/值对集合。之所以使用这种收集,是因为可能有许多因素影响该动作的状态,并且XAF应用程序应将它们全部考虑在内。

    因此,处理ViewEditModeChanged事件并根据当前编辑模式修改Action的Enabled集合。为此,请返回控制器的设计器,然后在“属性”窗口的“事件”视图中双击“已激活”事件。用以下代码替换自动生成的事件处理程序。

    private void ClearContactTasksController_Activated(object sender, EventArgs e) {
        // Enables the ClearTasks Action if the current Detail View's ViewEditMode property
        // is set to ViewEditMode.Edit.
        ClearTasksAction.Enabled.SetItemValue("EditMode", 
            ((DetailView)View).ViewEditMode == ViewEditMode.Edit);
        ((DetailView)View).ViewEditModeChanged  = 
            new EventHandler<EventArgs>(ClearContactTasksController_ViewEditModeChanged);
    }
    // Manages the ClearTasks Action enabled state.
    void ClearContactTasksController_ViewEditModeChanged(object sender, EventArgs e) {
        ClearTasksAction.Enabled.SetItemValue("EditMode", 
            ((DetailView)View).ViewEditMode == ViewEditMode.Edit);
    }
    

若要查看结果,请运行WinForms或ASP.NET应用程序并执行以下操作。

  1. 打开任何对象的详细信息表单。
  2. 单击清除任务按钮,它代表您已执行的操作。确认消息将出现,如下图所示。

    Tutorial_EF_Lesson1_3

  3. 单击“是”(在WinForms应用程序中)或“确定”(在ASP.NET应用程序中)。所有履带任务中的联系将被清空。

    Tutorial_EF_Lesson1_4

注意

尽管本主题说明了如何使用设计器创建控制器,但是控制器还是可以手动编写的类,如基本教程(SimpleProjectManager应用程序)的“定制应用程序UI和行为”主题中所示。

如果需要在详细视图内放置动作,请参阅如何:在详细视图布局中包括动作

您可以在MySolution.Module |中查看本课程中使用的代码。控制器| XAF随附的Main Demo的ClearContactTasksController.cs(ClearContactTasksController.vb)文件。该MainDemo应用程序安装在%PUBLIC%\文件\ DevExpress的演示19.2 \组件\ eXpressApp框架\ MainDemo默认。可从http://demos.devexpress.com/XAF/MainDemo/在线获得ASP.NET版本。

下一课: 添加参数化操作

相关文章

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