EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

添加参数化操作

在本课程中,您将学习如何添加参数化操作。这些类型的操作比您在上一课中学到的简单操作要稍微复杂一些。参数化操作提供了一个编辑器,以便最终用户可以在执行之前输入一个值。在本课程中,将实现新的View Controller,并将新的Parametriczed Action添加到其中。该操作将通过其Subject属性值搜索DemoTask对象,并在详细信息表单上显示找到的对象。

注意

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

  • 如“添加简单操作”课程中所述,将新的View Controller添加到MySolution.Module项目中。将其命名为FindBySubjectController。
  • 右键单击新创建的MySolution.Module | 控制器| FindBySubjectController.csFindBySubjectController.vb)文件,然后选择“视图设计器”以调用该设计器。从DX中拖动ParametrizedAction 19.2设计器的XAF“动作工具箱”选项卡。在“ ParametrizedAction属性”窗口中,将“名称”和“ ID”属性设置为“ FindBySubjectAction”,并将“标题”属性设置为“按主题查找任务”。

    Tutorial_EF_Lesson3_2

  • 使用其FindBySubjectAction激活FindBySubjectController来执行DemoTask列表视图,请通过Controller的“属性”窗口将ViewController.TargetViewType属性设置为“ ListView”,并将ViewController.TargetObjectType设置为MySolution.Module.DemoTask。要仅针对根视图激活Controller,请将ViewController.TargetViewNesting属性设置为Root

    Tutorial_EF_Lesson3_2_1

  • 接下来,您需要处理Action的ParametrizedAction.Execute事件以实现搜索功能。将FindBySubject动作集中在控制器的设计器中。切换到“属性”窗口中的“事件”视图。双击Execute事件,将自动生成的事件处理程序代码替换为以下内容。

    private void FindBySubjectAction_Execute(object sender, ParametrizedActionExecuteEventArgs e) {
        IObjectSpace objectSpace = Application.CreateObjectSpace(((ListView)View).ObjectTypeInfo.Type);
        string paramValue = e.ParameterCurrentValue as string;
        object obj = objectSpace.FindObject(((ListView)View).ObjectTypeInfo.Type,
            CriteriaOperator.Parse(string.Format("Contains([Subject], '{0}')", paramValue)));
        if(obj != null) {
            DetailView detailView = Application.CreateDetailView(objectSpace, obj);
            detailView.ViewEditMode = DevExpress.ExpressApp.Editors.ViewEditMode.Edit;
            e.ShowViewParameters.CreatedView = detailView;
        }
    }
    

    执行的参数已经在行动的编辑被键入后,事件被引发。上面的处理程序将查找DemoTask对象,该对象的主题包含指定为参数的文本,并调用该对象的详细信息表单。

    注意
    • 要搜索对象,您将需要一个Object Space。在处理持久对象时,始终使用对象空间。要在此任务中使用对象空间,请使用XafApplication.CreateObjectSpace方法创建它。由于几乎可以在代码中的任何位置访问应用程序,因此其CreateObjectSpace方法始终很有用。
    • 若要使用IObjectSpace.FindObject方法,请传递搜索对象的类型及其条件。若要获取当前列表视图中表示的对象的类型,请使用视图的对象类型信息(请参见View.ObjectTypeInfo)。要生成条件,请通过将条件组件作为构造函数的参数传递来创建BinaryOperator对象。有关更多信息,请参阅XPO文档中的“查询数据存储”部分。
    • 要获取最终用户在编辑器中代表FindBySubjectAction输入的值,请使用事件处理程序的ParametrizedActionExecuteEventArgs.ParameterCurrentValue参数。
    • 要在单独的详细信息视图中显示找到的对象,请通过XafApplication.CreateDetailView方法创建视图,并将其分配给事件处理程序的ActionBaseEventArgs.ShowViewParameters参数的ShowViewParameters.CreatedView属性。可以在任何类型的Action的Execute事件处理程序中初始化Show View Parameters ,因此您始终可以在执行Action后显示View。有关如何在单独的窗口中显示视图的其他信息,请参阅“显示视图的方式”主题。
    • 正如你可能已经注意到了,XafApplication当你需要创建一个列表视图对象是有用的,详细查看,对象空间等。XAFApplication对象是从一个XAF应用许多地方访问。在Controllers中,可以通过Controller.Application属性访问它。
  • 运行WinForms或ASP.NET应用程序。在导航控件中选择任务项。查找代表您已执行的操作的按主题查找任务编辑器。在此编辑器中键入来自现有DemoTask对象的Subject属性的单词。按Enter键或单击“按主题查找任务”。将显示带有此对象的详细信息表单。

    Tutorial_EF_Lesson3_3

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

下一课: 添加显示弹出窗口的操作

相关文章

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