EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:将分析操作添加到列表视图

为了增加分析应用程序中数据的功能,eXpressApp Framework提供了数据透视图模块。该分析数据主题说明,即启动分析功能,在应用程序中,你应该将这个模块和内置的分析商务舱添加到应用程序。在这种情况下,导航控件将包含Analysis项目,并且最终用户将能够创建Analysis对象。但是,您可能需要提供从任何列表视图创建Analysis对象的功能,将新Analysis对象的DataType属性设置为List View的对象类型。本主题演示如何完成此任务。

注意

移动应用程序不支持数据透视图模块,因此本主题中描述的方法无法在Mobile平台中实现。

提示

DevExpress代码示例数据库(http://www.devexpress.com/example=E389)中提供了完整的示例项目。

  • 在您的应用程序模块中创建一个新的ViewController。为此调用设计器,并将ViewController.TargetViewType属性设置为ListView。这意味着将仅针对列表视图激活控制器。

    有关创建控制器的详细信息,请参阅教程中的“扩展功能”部分。

  • 在控制器的设计器中,添加一个简单动作(请参阅添加简单动作)。将其ActionBase.Id属性设置为AnalyzeData,将ActionBase.Category属性设置为RecordEdit,将ActionBase.Caption属性设置为Analyze,将ActionBase.ImageName属性设置为BO_Analysis(内置图像)。
  • 要在未将VisibleInReportsAttribute应用于当前列表视图表示的业务类时停用该动作,请订阅Controller的Controller.Activated事件。通过以下方式处理此事件:

    using DevExpress.ExpressApp.Model;
    // ...
    public partial class AnalyseDataFromAnyViewController : ViewController {
        //...
        private void AnalyseDataFromAnyViewController_Activated(object sender, EventArgs e) {
            analyseDataAction.Active["VisibleInReports"] =
                ((IModelClassReportsVisibility)View.Model.Application.BOModel.GetClass(
                    View.ObjectTypeInfo.Type)).IsVisibleInReports;
        }
    }
    

    要停用Action,请使用其ActionBase.Active属性。

  • 订阅Action的SimpleAction.Execute事件,以执行将使用新创建的Analysis对象调用明细视图的代码。通过以下方式处理此事件:

    using DevExpress.Persistent.BaseImpl;
    //...
    public partial class AnalyseDataFromAnyViewController : ViewController {
       //...
       private void analyseDataAction_Execute(object sender, SimpleActionExecuteEventArgs e) {
          IObjectSpace objectSpaceInternal = Application.CreateObjectSpace(typeof(Analysis));
          Analysis obj = objectSpaceInternal.CreateObject<Analysis>();
          obj.DataType = View.ObjectTypeInfo.Type;
          obj.Name = "Analysis: "   View.Caption   " "   DateTime.Now.ToString();
          e.ShowViewParameters.CreatedView = Application.CreateDetailView(objectSpaceInternal, obj);
          e.ShowViewParameters.TargetWindow = TargetWindow.Default;
          e.ShowViewParameters.Context = TemplateContext.View;
       }
    }
    

    在上面的代码中,使用了ShowViewParameters对象。有关如何使用此类型对象的详细信息,请参阅“显示视图的方式”主题。

  • 由于将使用设置NameDataType属性创建Analysis对象,因此一次绑定数据是适当的。否则,最终用户将不得不亲自执行此附加操作。要绑定数据,请在代码中执行BindAnalysisDataBindAnalysisData)。为此,实现“数据绑定方面”主题中详细介绍的AnalysisDataBindController的后代。

    using DevExpress.ExpressApp.PivotChart;
    //...
    public class AssignAnalysisDataSourceViewController : AnalysisDataBindController {
       protected override void OnActivated() {
          base.OnActivated();
          Analysis obj = View.CurrentObject as Analysis;
          //Allow data source loading if the ObjectTypeName property is specified
          if(obj.ObjectTypeName != null) {
             analysisEditor.IsDataSourceReady = true;
             UpdateBindUnbindActionsState();
          }
       }
    }
    
    注意

    请注意,您应该在模块项目中引用DevExpress.ExpressApp.PivotChart.v 19.2程序集。

下图演示了可用于联系人列表视图的AnalyzeData操作。单击此操作时,新创建的Analysis对象将显示在调用的详细信息视图中。对象的NameDataType属性是自动指定的。

AnalyzeAction

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