EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

数据透视图模块概述

PivotChart模块提供了使用由DevExpress开发的XtraPivotGridASPxPivotGridXtraCharts控件分析数据的功能。该XtraPivotGridASPxPivotGrid控件(分别为Windows Forms和ASP.NET平台)提供终端用户与切片和数据呈现一个非常直观的体验,并且在每个单独的屏幕上提供的报告,总的最终用户控制大量的自定义布局选项。无论从哪个角度来看,都可以呈现数据来回答业务问题。该XtraCharts该库专为Windows Forms和ASP.NET设计,可为您提供一整套2D和3D图表,轻松满足广泛的业务需求。PivotChart模块针对XAF应用程序采用了这些控件,因此您可以轻松添加数据分析功能。本主题详细介绍了使用数据透视图模块的所有基础知识。

在两个模块项目中介绍了数据透视图模块。

  • 数据透视图WindowsFormsModule

    添加对DevExpress.ExpressApp.PivotChart.v 19.2 .dllDevExpress.ExpressApp.PivotChart.Win.v 19.2 .dll程序集的引用。

    您可以将此模块添加到Windows窗体模块。为此,调用模块设计器并将PivotChartWindowsFormsModule从“工具箱”拖动到RequiredModules面板。或者,您可以将此模块添加到Windows Forms应用程序项目中。为此,调用应用程序设计器并将PivotChartWindowsFormsModule从“工具箱”拖到“模块”面板。在Designer中进行更改后,请不要忘记重建解决方案。

  • 数据透视图AspNetModule

    添加对DevExpress.ExpressApp.PivotChart.v 19.2 .dllDevExpress.ExpressApp.PivotChart.Web.v 19.2 .dll程序集的引用。

    您可以将此模块添加到ASP.NET应用程序项目中。为此,调用应用程序设计器并将PivotChartASPNETModule从“工具箱”拖到“模块”面板。或者,您可以将此模块添加到ASP.NET模块中。为此,调用模块设计器并将PivotChartASPNETModule从“工具箱”拖动RequiredModules面板。请注意,在这种情况下,您将需要手动将数据透视图模板添加到应用程序项目中。最简单的方法是通过“应用程序设计器”将PivotChartASPNETModule模块添加到应用程序项目中然后将其删除。这将自动添加所有必需的模板。

    在Designer中进行更改后,请不要忘记重建解决方案。

注意

要查看“数据透视图”模块的“控制器动作”列表,请参阅“附加模块中的内置控制器和动作”主题。

数据透视图模块基础

若要显示数据分析,数据透视图模块分别包含Windows窗体和ASP.NET应用程序的AnalysisEditorWinAnalysisEditorWeb属性编辑器。这些属性编辑器与引用实现IAnalysisInfo接口的对象的属性一起使用。该接口具有以下成员。

  • 数据类型

    指定要分析的对象的类型。

  • 标准

    指定标准,根据这些标准将从数据库中将对象检索到要分析的集合。支持功能条件运算符

  • 尺寸属性

    将在枢轴网格中进行分析的已分析对象类型的属性列表。

  • ChartSettingsContent

    表示图表设置的字节数组。

  • PivotGridSettingsContent

    一个字节数组,表示枢轴网格的配置。

  • InfoChanged

    更改IAnalysisInfo对象的 某些属性时引发的事件。

  • 自己

    提供对实现IAnalysisInfo接口的类的当前实例的访问。该属性的值由AnalysisEditorWinAnalysisEditorWeb属性编辑器显示。

XAF提供了实现IAnalysisInfo接口的Analysis类。因此,您可以将Analysis类添加到应用程序的业务模型中,以激活随添加的PivotChart模块提供的Analysis功能。但是,如果需要,可以在自定义类中实现IAnalysisInfo接口,也可以从Analysis类继承。该AnalysisEditorWin和AnalysisEditorWeb属性编辑器将在任何情况下使用。在实现自定义类时,请查看位于%PROGRAMFILES(x86)%\ DevExpress 19.2 \ Components \中的Analysis类。Sources \ DevExpress.Persistent \ DevExpress.Persistent.BaseImpl文件夹。

当其DataType属性更改时,Analysis类将填充DimensionProperties列表。为此,它调用ModelDimensionPropertyExtractor对象的GetDimensionProperties方法。此对象从应用程序模型的BOModel |获取信息。<Class>节点,这些节点定义分配给DataType属性及其祖先的类。BOModel |的属性 <类别> | 会员| <Member>节点具有IModelMemberPivotChartVisibility.IsVisibleInAnalysis设置为true的属性(默认值)将添加到DimensionProperties列表中。您可以通过从静态DimensionPropertyExtractor类继承来更改此行为。自定义Dimension Property Extractor的实例必须设置为DimensionPropertyExtractorInstance属性。为此,请在模块的Setup方法中订阅XafApplication.SetupComplete事件。如果自定义维度属性提取器具有重写的IDimensionPropertyExtractor.GetDimensionProperties方法,则应实现自定义Analysis类,并在例如ObjectTypeName属性设置器。

在应用程序中设置PivotChart模块时,它将为实现IAnalysisInfo接口的类将项目添加到导航控件中。注意不要在您的业务模型中有多个实现IAnalysisInfo接口的类。否则,您将在导航控件中具有多个“分析”项目。除了此应用程序模型自定义之外,数据透视图模块还为IAnalysisInfo.Self和IAnalysis.DataType属性设置了适当的属性编辑器。具有代表IanalysisInfo对象的列表视图和详细视图的其他自定义项是由“业务类库自定义”模块执行的,您可以根据需要添加它。

下图演示了“分析详细信息视图”。

PivotGridModule_Start

在按下BindAnalysisData Action(BindAnalysisData)之前,指定类型的对象不会从数据库检索到枢轴网格。此操作仅加载满足Criteria属性和先前在枢轴网格的Prefilter中为当前Analysis对象设置的筛选器指定的条件的对象。

PivotGridModule_Filters

注意

字段标题设置为BOModel | IModelCommonMemberViewItem.Caption属性值。<类别> | 会员| 对应于已分析类型属性的<Member>节点。

在当前Analysis对象中进行了某些更改之后,请使用UnbindAnalysisData Action(UnbindAnalysisData)清除枢轴网格的数据源。然后,再次使用BindAnalysisData Action(BindAnalysisData)使用新设置的Analysis对象的属性值加载对象。

下图演示了带有已加载对象的Analysis Detail视图。对数据透视表网格进行了配置,以便您可以查看为一个联系人分配了多少个任务。

在Windows窗体应用程序中:

Tutorial_EM_Lesson_6_4

在ASP.NET应用程序中:

MakeAnalysis_Web_2

如果切换到“图表”选项卡,您将看到在由图表表示的数据透视表网格中配置的数据。

在Windows窗体应用程序中:

Tutorial_EM_Lesson_6_5

在ASP.NET应用程序中:

PivotGridModule_Chart_Web

所述AnalysisEditorWin属性编辑器使用AnalysisControlWin控制显示数据。此控件包含一个带有两个页面的选项卡控件。一页包含一个PivotGrid。第二页包含ChartControl和两个检查编辑:ShowRowGrandTotalCheckEditShowColumnGrandTotalCheckEdit

所述AnalysisEditorWeb属性编辑器使用AnalysisControlWeb控制显示数据。此控件包含一个带有两个页面的选项卡控件。一页包含一个PivotGrid。第二页包含ChartControlShowRowGrandTotalCheckEditShowColumnGrandTotalCheckEdit检查编辑,图图表类型组合框和PrintChart按钮。

枢轴网格的设置将保存到当前Analysis对象的PivotGridSettingsContent属性。图表控件的设置将保存到ChartSettingsContent属性。因此,下一次为该Analysis对象调用明细视图时,枢轴网格和统计图的配置方式与上次相同。保存和加载设置由AnalysisEditorWinAnalysisEditorWeb)编辑器执行。

若要了解Windows窗体和ASP.NET应用程序中PivotGrid控件提供的功能,请参阅Visual Elements(XtraPivotGrid)Visual Elements(XtraPivotGrid)主题。要了解ChartControl提供的功能,请参阅Visual Elements(XtraPivotGrid)主题。

设置属性以用作数据透视表数据源

默认情况下,分配给当前Analysis的DataType属性的类的属性被视为枢轴网格数据源(包括继承的属性)。但是,只有那些属性的BOModel | <类别> | 会员| <成员>应用程序模型节点将IsVisibleInAnalysis属性设置为true(默认值),并将其添加到数据透视表网格。您可能需要向枢轴网格添加复杂的路径属性。例如,如果Task类具有Payment引用属性,则在数据透视表网格中为Task类型对象配置数据时,可能需要使用Payment.Amount属性。要在设计时添加复杂的属性,请使用应用模型。在模型编辑器中,导航到所需的BOModel |。<Class>节点(在我们的示例中为Task节点),然后向其添加一个新的Member节点。对于新添加的节点,将Name属性设置为所需的复杂路径属性(在我们的示例中为Payment.Amount)。此属性指定要添加到枢轴网格的属性。检查新成员的IsVisibleInAnalysis属性是否设置为true

PivotGridModule_ComplexProperty

在运行时,使用“字段列表”隐藏暂时不需要的属性。

PivotGridModule_FieldList_Hiding

PivotGridModule_FieldList_AddField_Web

在Windows窗体应用程序中,字段列表具有以下按钮。

  • 添加

    使用此按钮可以添加枢轴网格中当前不可用的属性。在调用的窗口中,以灰色显示的属性已经添加到枢轴网格中。

    PivotGridModule_FieldList_AddField

    如您所见,您可以使用此技术添加复杂的路径属性。

  • 去掉

    使用此按钮可以删除“字段列表”中当前选择的属性。

  • 添加

    使用此按钮可将字段列表中当前选择的属性添加到所需区域:行区域,列区域,过滤器区域或数据区域。

在代码中创建Analysis对象时,可以使用IAnalysisInfo.DimensionProperties集合更改显示在数据透视表网格中的属性列表。默认情况下,此集合由在应用程序模型中将VisibleInAnalysis属性设置为true的属性填充。请注意,在内置Analysis类中,更改了Analysis.ObjectTypeName属性后,将重新填充此集合。因此,在设置ObjectTypeName属性后,必须更改DimensionProperties集合。以下代码演示了如何在更新程序的ModuleUpdater.UpdateDatabaseAfterUpdateSchema中创建Analysis类型的对象。 方法。

public class Updater : DevExpress.ExpressApp.Updating.ModuleUpdater {
    public override void UpdateDatabaseAfterUpdateSchema() {
        Analysis taskAnalysis1 = 
            ObjectSpace.FindObject<Analysis>(CriteriaOperator.Parse(
            "Name='Completed tasks'"));
        if(taskAnalysis1 == null) {
            taskAnalysis1 = ObjectSpace.CreateObject<Analysis>();         
            taskAnalysis1.Name = "Completed tasks";
            taskAnalysis1.ObjectTypeName = typeof(DemoTask).FullName;
            taskAnalysis1.DimensionProperties.Clear();
            taskAnalysis1.DimensionProperties.Add("Subject");
            taskAnalysis1.Save();
        }
        ObjectSpace.CommitChanges();
    }
}

有关如何在代码中创建Analysis对象的详细信息,请参阅“使用应用程序分发分析”主题。

将业务对象类型设置为在分析中可用

创建Analysis对象时,应指定要分析的业务对象的类型。为此,使用了DataType属性。在UI中,此属性由带有可用类型列表的组合框显示。此列表仅包含在相应的BOModel |中将VisibleInReports属性设置为true<Class>节点。此属性由“数据透视图和报表V2模块”添加到此节点。因此,要通过“模型编辑器”设置此属性,请使用引用了这些模块之一的项目。或者,您可以将VisibleInReportsAttribute应用于代码中的业务类。

PivotChartModule_VisibleInReports

PivotChartModule_VisibleInReports_Win

在代码中访问数据透视表网格和图表控件

您可以利用AnalysisEditorWin或AnalysisEditorWeb属性编辑器使用的PivotGridChartControl。要使用代码访问所需的控件,请创建一个View Controller并处理AnalysisDataBindController的BindData Action的Execute事件。您的控制器应仅针对详细视图激活。因此,将Controller的ViewController.TargetViewType属性设置为DetailView值。

在Windows窗体模块中:

using DevExpress.ExpressApp;
using DevExpress.ExpressApp.PivotChart.Win;
using DevExpress.ExpressApp.Actions;
using DevExpress.ExpressApp.PivotChart;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
using DevExpress.XtraCharts;
using DevExpress.XtraPivotGrid;
//...
public class MyController : ObjectViewController<DetailView, IAnalysisInfo> {
    protected override void OnActivated() {
        base.OnActivated();
        Frame.GetController<AnalysisDataBindController>().BindDataAction.Execute  = 
            new SimpleActionExecuteEventHandler(BindDataAction_Execute);
    }
    void BindDataAction_Execute(object sender, SimpleActionExecuteEventArgs e) {
        if((View.CurrentObject as Analysis).DataType == typeof(DemoTask)) {
            foreach(AnalysisEditorWin editor in ((DetailView)View).GetItems<AnalysisEditorWin>()) {
                ChartControl chartControl = editor.Control.ChartControl;
                PivotGridControl pivotGridControl = editor.Control.PivotGrid;
                // Do what you want with the chart and pivot grid controls 
            }
        }
    }
}
重点

需要以下引用来编译上面的代码:DevExpress.Charts.v 19.2 .CoreDevExpress.ExpressApp.PivotChart.v 19.2DevExpress.ExpressApp.PivotChart.Win.v 19.2DevExpress.XtraCharts.v 19.2DevExpress.XtraCharts .v 19.2 .UIDevExpress.XtraPivotGrid.v 19.2

在ASP.NET模块中:

using DevExpress.XtraCharts.Web;
using DevExpress.Web.ASPxPivotGrid;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using DevExpress.ExpressApp.PivotChart;
using DevExpress.Persistent.Base;
//...
public class MyController : ObjectViewController<DetailView, IAnalysisInfo> {
    protected override void OnActivated() {
        base.OnActivated();
        Frame.GetController<AnalysisDataBindController>().BindDataAction.Execute  =
            new SimpleActionExecuteEventHandler(BindDataAction_Execute);
    }
    void BindDataAction_Execute(object sender, SimpleActionExecuteEventArgs e) {
        if (ViewCurrentObject.DataType == typeof(DemoTask)) {
            foreach (AnalysisEditorWeb editor in View.GetItems<AnalysisEditorWeb>()) {
                WebChartControl chartControl = editor.Control.ChartControl;
                ASPxPivotGrid pivotGridControl = editor.Control.PivotGrid;
                // Do what you want with the chart and pivot grid controls 
            }
        }
    }
}
重点

需要以下引用来编译上面的代码:DevExpress.ExpressApp.PivotChart.v 19.2DevExpress.ExpressApp.PivotChart.Web.v 19.2DevExpress.XtraCharts.v 19.2DevExpress.XtraCharts.v 19.2 .WebDevExpress.Charts .v 19.2 .CoreDevExpress.PivotGrid.v 19.2 .CoreDevExpress.Web.ASPxPivotGrid.v 19.2System.Web

相关文章

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