Dev Express Report 学习总结(二)关于如何使用Grouping分组
对于所有的报表工具来说,基本上所有Grouping功能的都很相似。正如前面说到的,Group处于Page Header和Page Footer之间,同时又将Detail包括与其中。
下面还是通过一个例子来进行说明。这个例子的主要功能是显示山西和四川两省的居民平均消费水平,主要从食品,服装,医疗及旅行这四方面来进行分组并按省进行小计及最后总的合计。此外,当前这个例子主要通过class进行数据源的的绑定,其具体的操作步骤如下所示:
1. 创建新的报表解决方案,同时创建三个项目,一个为Class Library项目,一个为Report项目,另一个为控制台项目,主要用来对report进行调用并测试。三者的依赖关系为:Report项目依赖类库项目,而控制台项目则依赖类库项目和Report项目;
2. 在类库项目中添加一个类CitizenConsumption并编译该项目,内容如下:
public class CitizenConsumption
{
public String ProviceName { get; set; }
public String ExpenseItem { get; set; }
public Decimal Expense { get; set; }
}
3. 在Report项目中添加对类库项目的引用,新建空的Report页面,然后进行如下的操作:
A. 在当前Report页面上添加ReportHeader,ReportFooter,GroupHeader及Group Footer;
B. 从Toolbox中的Data类别中找到BindingSource控件并拖到当前的Report页面上,可以通过点击工具栏中的XtraReports->Report Explorer找到它。右击它的属性,在它的DataSource属性中通过点击Add Project Data Source把CitizenConsumption作为它的数据源;
C. 在工具栏中,点击XtraReports->Field List,来显示我们我们可以使用的列。在任意一列上选择右键来创建CalculatedField,主要用来对消费的金额进行合计,表达式为:sum([Expense]);
D. 在当前的Report页面上新建XRLabel并绑定列到相应的XRLabel上,完成后的结果如下所示(PS.Sum([Expense])需要将Summary Running设置为Group):

E. 编译当前project。
4. 在控制台项目中添加对上述两个project的引用然后进行如下的操作:
A. 添加类DataPreparation,具体如下所示:
public class DataPreparation
{
public List<CitizenConsumption> GetCitizenConsumptionList()
{
List<CitizenConsumption> AEList = new List<CitizenConsumption>(); CitizenConsumption ce_11 = new CitizenConsumption();
ce_11.ProviceName = "ShanXi";
ce_11.ExpenseItem = "Food";
ce_11.Expense = ; CitizenConsumption ce_12 = new CitizenConsumption();
ce_12.ProviceName = "ShanXi";
ce_12.ExpenseItem = "Clothing";
ce_12.Expense = ; CitizenConsumption ce_13 = new CitizenConsumption();
ce_13.ProviceName = "ShanXi";
ce_13.ExpenseItem = "Travel";
ce_13.Expense = ; CitizenConsumption ce_14 = new CitizenConsumption();
ce_14.ProviceName = "ShanXi";
ce_14.ExpenseItem = "MedicalCare";
ce_14.Expense = ; CitizenConsumption ce_21 = new CitizenConsumption();
ce_21.ProviceName = "SiChuan";
ce_21.ExpenseItem = "Food";
ce_21.Expense = ; CitizenConsumption ce_22 = new CitizenConsumption();
ce_22.ProviceName = "SiChuan";
ce_22.ExpenseItem = "Clothing";
ce_22.Expense = ; CitizenConsumption ce_23 = new CitizenConsumption();
ce_23.ProviceName = "SiChuan";
ce_23.ExpenseItem = "Travel";
ce_23.Expense = ; CitizenConsumption ce_24 = new CitizenConsumption();
ce_24.ProviceName = "SiChuan";
ce_24.ExpenseItem = "MedicalCare";
ce_24.Expense = ; AEList.Add(ce_11);
AEList.Add(ce_12);
AEList.Add(ce_13);
AEList.Add(ce_14); AEList.Add(ce_21);
AEList.Add(ce_22);
AEList.Add(ce_23);
AEList.Add(ce_24);
return AEList;
}
}
B. 添加新的WinForms页面,添加按钮并触发其Click事件,Click的具体内容如下所示:
private void btnConfirm_Click(object sender, EventArgs e)
{
var dataprep = new DataPreparation();
using (var rpt = new ConsumptionExpense())
{
rpt.DataSource = (dataprep.GetAverangeExpenseList()); rpt.CreateDocument(); SaveFileDialog dlg = new SaveFileDialog();
dlg.DefaultExt = "pdf";
dlg.Filter = "Pdf documents (*.pdf)|*.pdf|All files (*.*)|*.*"; string filename;
if (dlg.ShowDialog() == DialogResult.OK)
{
filename = dlg.FileName;
rpt.ExportToPdf(filename);
MessageBox.Show("Exported to: " + filename);
};
}
}
C. 设置该项目为起始项目。
5. 点击F5运行,最终导出的PDF格式如下所示,至此,大功告成!

Dev Express Report 学习总结(二)关于如何使用Grouping分组的更多相关文章
- Dev Express Report 学习总结(八)Dev Express Reports 常见问题总结
1. 在新建ASP.NET Dev Express Report时的两种方式: A. 右键Add DevExpress Item->New Item->All->从Web Repor ...
- Dev Express Report 学习总结(一) 基础知识总结
Dev Express,一个非常优秀的报表控件.像其他报表一样,该报表也包括几个主要部分:Report Header,Page Header,Group Header,Detail,Group Foo ...
- Dev Express Report 学习总结(七)Dev Express Reports 常见知识点总结
1. CalculatedField中常见表达式: A. For percent: [ValA]* 100 / ([ValA]+[ ValB]); PS. Please remre ...
- Dev Express Report 学习总结(六)Dev Express Reports自定义Summary
在我们使用DevExpress开发报表的过程中,对于页面中复杂的数据合计,我们可能会使用到自定义Summary.下面通过一个例子来进行说明: 首先,我建立了如上图所示的报表页面,其中的数据源来自cla ...
- Dev Express Report 学习总结(三)关于子报表Sub-Report的使用
子报表即在一个Report(主报表)中嵌入另一个Report(子报表),从理论上来讲,任何一个Report都可以作为一个子报表,但在实际使用过程中,只有主报表和子报表构成一对多关系时才会使用子报表.使 ...
- Dev Express Report 学习总结(五)在分组中使用聚集表达式AggregateExpression
聚集表达式AggregateExpression主要包括几种:Avg(),Count(),Exists(),Max(),Min(),Single()和Sum().其中对于Sum(),在我看来主要有两种 ...
- Dev Express Report 学习总结(四)Dev Express 动态生成XRTable使用总结
1. XRTableCell常见属性 XRTableCell xrTableCell = new XRTableCell(); A. 字体及字体大小 xrTableCell.Font = new S ...
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
- muduo学习笔记(二)Reactor关键结构
目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...
随机推荐
- java中的全局变量与静态变量的区别与联系?有时候为什么专门定义静态变量。(标题党~~)
static代表“每个类一个”而不是“每个对象一个”.即静态变量是类的所有对象共有的. 1 static JFrame f; static MyDrawPanel ml; 整个应用程序如下: 定义在p ...
- Luogu 3205 [HNOI2010]合唱队
初赛滚粗的我含着眼泪写代码…… 设$f_{l, r, 0/1}$表示$[l, r]$的区间的队伍排列好,且最后一个插进去的在左边$(0)$/右边$(1)$的方案数,那么有初态$f_{i, i, 0} ...
- sed编辑器使用(转)
1.Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后, ...
- java反射中,Class.forName和classloader的区别
http://blog.csdn.net/qq_27093465/article/details/52262340
- 数据结构 nxd(顺序对)
数据结构 nxd(顺序对) 问题描述 给定 n 个数 a1,a2,...,an,求满足条件的(i,j)数量: i<j 且 a[i]<a[j] ★数据输入输入第一行为一个正整数 n.第二行为 ...
- STL-- vector中resize()和reserve()区别
最近写了一个小型的STL--TinySTL.发现有一些基础的东西需要记录下来,所以我打算多写一些东西,方便以后查看. 先看看<C++ Primer>中对resize()函数两种用法的介绍: ...
- java 的exception throw try catch
import java.util.*; public class MyException extends Exception { private static final Exception Exce ...
- C# 与Java初始化顺序及异同(转)
C#初始化顺序 类成员变量初始化先于类的构造函数 静态成员变量先于实例变量 子类成员变量先于父类成员变量(java相反) 父类构造函数先于子类构造函数 参考实例: using System; //us ...
- Linux计划任务 定时任务 Crond 配置详解 crond计划任务调试 sh -x 详解 JAVA脚本环境变量定义
一.Crond 是什么?(概述) crontab 是一款linux系统中的定时任务软件用于实现无人值守或后台定期执行及循环执行任务的脚本程序,在企业中使用的非常广泛. 现在开始学习linux计 ...
- 关于php缓存技术一些见解
参考的网站[很重要] ①.模拟高并发: https://blog.csdn.net/yxwb1253587469/article/details/50572927 https://blog.csdn. ...