PivotGridControl控件应用

摘要:
您可以通过标题按钮对字段值进行本地排序和筛选。区域5是显示过滤字段的数据过滤区域。拖动鼠标以添加或减少行、列和数据区域中的字段。树字段值。3) 本地过滤界面上显示的字段标题具有本地过滤功能。属性名称PivotGridField.Area的含义此属性表示字段当前所在的区域。PivotGridField.AllowedArea控件字段只能在指定区域中拖动。

一、概述

       PivotGridControlDevExpress组件中的一个重要控件,在数据多维分析方面具有强大的功能,它不仅可以分析数据库中的数据,而且还能够做联机分析处理(OLAP),并且支持多种数据仓库。前面的文章中介绍了如何用PivotGridControl制作交叉表部件,在智能窗体上展示交叉报表。本文将继续对PivotGridControl控件的应用技巧进行小结。< xmlnamespace prefix ="o" />

二、功能特点

       首先通过界面了解PivotGridControl控件的基本概念,下图是PivotGridControl控件显示的一个交叉表样例:

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

1:交叉表界面

       区域1、2分别是交叉表的行、列区域,包含行列字段值,及字段标题。通过标题按钮可以对字段值进行排序、本地过滤等操作。

       区域3、4是数据区域,其中白色的单元格是“汇总单元格”,它显示对数据源的汇总值。黄色单元格为“小计、总计”单元格,进一步统计汇总单元格的值。

       区域5是显示过滤字段的数据筛选区域,过滤字段不属于交叉表的一部分,专门用于对数据进行本地过滤。

       从这个交叉表可以了解到PivotGridControl控件具有以下特点:

1)     可定制的报表

       终端用户能够定制PivotGridControl的字段。在字段标题上点击右键弹出字段列表框,通过鼠标拖拽增加或减少行、列、数据区域的字段,改变交叉报表的分析方式。

 

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

 

2:字段定制

2)     树形结构的字段值

       1的行区域有“部门、姓名”2个字段,部门是姓名的上级字段,在部门的字段值上显示了“展开/折叠按钮”。例如图3折叠字段值“儿科”后,数据区域的单元格将以“儿科”小计行的方式显示。

       如果有2个以上的行(列)字段,除了最后一级,其它字段值都可以像树形节点一样展开/折叠。

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

3:树形字段值

3)     本地过滤

       界面上显示的字段标题具有本地过滤的功能。点击字段标题上的过滤按钮,可以弹出字段值列表。筛选字段值后,交叉表以此为条件过滤数据源中的数据后再进行汇总。当行、列字段值较多时,终端用户通过本地过滤减少行列数,只统计出当前关注的数据。

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

4:本地过滤

4)     数据钻取

       通过钻取单元格可以得到单元格汇总的原始记录,参见下图:

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

5:数据钻取

代码示例:

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

       PivotGridControl单元格双击事件中,调用了对象的CreateDrillDownDataSource方法,得到单元格值的详细记录。数据钻取是深入分析数据的必备功能。

三、字段控件属性

       字段控件(PivotGridField)是PivotGridControl中的基本组成元素,以上功能就是控制其字段属性得以实现的。

属性名称

意义

PivotGridField.Area

该属性表示字段当前所在的区域,有{行区域、列区域、数据区域、数据过滤区域}4个单选值。拖拽字段位置后,属性值也会实时变化。

PivotGridField.AllowedArea

控制字段只能在指定区域中拖动,有{行区域、列区域、数据区域、数据过滤区域}4个多选项。该属性值应包含“Area”的属性值。

PivotGridField.AreaIndex

表示字段在同一个区域的排列顺序,可以在界面上拖拽动态设置。

PivotGridField.Visible

字段是否可见,不可见的字段可以放到字段列表框备用。

PivotGridField.Option.AllowExpand

字段在行列区域时,字段值是否显示展开、折叠按钮。

PivotGridField.Option.AllowFilter

字段标题上是否显示本地过滤按钮

PivotGridField.SummaryType

字段的汇总类型:求和、平均值、最大值、最小值、计数。

PivotGridField.FieldName

绑定的业务数据表字段名称

PivotGridField.FieldEdit

嵌入单元格的编辑控件,用此控件实现交叉表的数据编辑功能。

PivotGridField.Width

通过设置字段标题宽度控制交叉表行、列的宽度。但字段在列区域时,此属性是无效的,因为列宽是由单元格宽度决定的,而单元格宽度等于数据字段标题宽度。并且从属于同一个数据字段的所有列宽只能统一设置,无法单独设置每一列的宽度。

除了以上比较重要的属性,还有排序、图标、外观等属性。

四、应用分析

1.     数据编辑

       交叉表除了展示数据分析结果,也可以用于编辑数据。以前的文章介绍了交叉表编辑的应用场景及限制条件,重点是单元格要能够唯一映射到数据源的原始记录。

       和网格部件类似,单元格的编辑功能都是通过“Embed Editor”实现的,因此可以和网格部件使用相同的字段模型。

       但是和网格部件的区别在于,编辑单元格的值后,PivotGridControl是不会自动把单元格输入的值更新到数据源的。从图5的数据钻取结果可知,单元格可能对应多条原始记录。那么PivotGridControl控件本身就无法决定应该如何更新这些原始记录,这就需要开发者根据实际的业务需求去手动更新数据源的记录。所以根据目前的应用场景,规定单元格数据钻取结果超过1条记录时就不允许编辑。

2.     显示多行文本

       前面涉及的交叉表例子都是以数字类型的字段作为数据字段。实际上文本类型的字段也可能作为数据字段(参见图6)。这种交叉表不是为了对文本字段进行统计分析,而是以二维的表结构显示,使其易于阅读。

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

6

       但是PivotGridControl对多行文本的支持并不理想。虽然可以用多行文本的“Embed Editor”把字段值显示出来,但显示出来的结果却只有一行字符的高度。从字段属性表可知,字段控件也只能设置其宽度,而没有设置高度的功能,更不用说像Excel那样自适应每行高度了。

       经过一番搜寻,发现PivotGridControl  V11.1中有虚方法“RaiseCustomRowHeignt()”。

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

       该方法的第一个输入参数表示行区域中将要设置行高的那个单元格,第二个参数为行高。重写此虚方法即可改写默认行高。

       RaiseCustomRowHeignt 是单独设置每行高度的,在列宽固定的条件下,只要计算出每行单元格的最长内容,就可以得到每行的最佳高度。

       测量字符串显示尺寸的示例代码:

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

       使用GDI+的 MeasureString 方法可以测得字符串在指定字体时的显示尺寸 sizeF。

       MeasureString 的第3个参数是可选的,设置一个固定宽度,那么测得的结果就是在考虑自动换行情况下的显示尺寸。

效果图预览:

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

7:多行文本

3.     隐藏字段的2种方法

       在字段属性中有“Visible”控制字段是否显示,除此之外还可以把字段宽度设为0,实现字段的隐藏。

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

8

参见示例“图8”,有“日期”行字段。下面分别用2种方式隐藏该字段

方法一:把“日期”字段控件的属性设为fale,结果见图9,交叉表的分析字段只包含了“开单人、收费项目”。“日期”字段已经不在交叉表的行区域中了。

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

9

方法二:把“日期”字段控件的宽度“Width”属性设为0,结果如下:

 

PivotGridControl控件应用 - 臭猪比 - 臭 猪 比

 

10

       与图8比较可知,交叉表的分析结果与隐藏“日期”字段之前相同。

       所以零宽度字段不但可以实现行字段的隐藏,同时还能够保持交叉表的分析方式不变。用零宽度字段可以实现一些特殊结构的交叉表。

       PivotGridControl还有很多有用的功能,目前我们只是用到了其中的一部分,以后有需要再深入学习。

免责声明:文章转载自《PivotGridControl控件应用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JSON格式要求Django:使用模态框新增数据,成功后提示“提交成功”,并刷新表格bootstrap-table数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Excel透视表基础之数据源、创建、基本术语、基本操作

数据源的基本要求: 每列数据的第一行包含该列标题 不能包含空行或空列 不能包含空单元格 不能包含合并单元格 不能包含同类字段 如果包含空行、空列则删除空行和空列。如果包含空单元格则填充空单元格。 如果包含合并单元格则将合并单元格取消,并将取消后的空单元格填充。方法:选择第一行、按着shift选择最后一行Ctrl + G定位空值,输入“=向上的单元格”...

实战二(上):程序出错该返回啥?NULL、异常、错误码、空对象?

我们可以把函数的运行结果分为两类。一类是预期的结果,也就是函数在正常情况下输出的结果。一类是非预期的结果,也就是函数在异常(或叫出错)情况下输出的结果。比如,在上一节课中,获取本机名的函数,在正常情况下,函数返回字符串格式的本机名;在异常情况下,获取本机名失败,函数返回 UnknownHostException 异常对象。 在正常情况下,函数返回数据的类...

Unity中对注册表进行修改

问题背景: PC端软件开发,当我在Unity中的PlayerSetting中设置好分辨率,每次打包运行后会记忆上次退出时窗口的分辨率(记忆窗口状态),导致下次打开时不是PlayerSetting中的初始设置,而是读取注册表记录的数据。而我的需求时必须每次进去时都是指定的那个分辨率。 问题纠结点: 1.注册表信息是否可删,怎么获取到删除 2.也不能直接删除整...

安卓(TableLayout)

1、特点 公共类TableLayout扩展LinearLayout容器不显示其行、列或单元格的边框线。每一行有零个或多个单元格;每个单元格可以包含一个视图对象该表的列数与包含最多单元格的行的列数相同。一个表可以保留空单元格。单元格可以跨列,就像在HTML中一样。 列的宽度由该列中单元格最宽的行定义。但是,TableLayout可以通过调用setColumn...

gridControl通过设置条件,改变单元格颜色

我现在用gridControl,需要改变单元格颜色。(标准值-偏差负)<=检测值<=(检测值+偏差正)之外,检测值就显示红色,或者背景设置成红色。用了RowCellStyle和CustomDrawCell都无法达到效果。而且出现程序卡死的情况。网上有人说gridcontrol有Apperance-----Format conditions 但是...

上下拉刷新

一.上拉刷新 1.为什么要做上拉刷新?      想要看一些旧的(更多)数据,就需要上拉刷新,加载更多数据   2.上拉刷新永远都显示在tableView最底部,用什么搭建?      tableFootView永远在tableView最底部,可以用它来搭建   3.上拉刷新业务逻辑      3.1当上拉刷新控件(footView)全部显示的时候,加载...