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 ...
随机推荐
- 学会使用postman工具模拟请求-----待补充
登录: backstop 密码:backstop的密码 记得加上header,在swagger中有content-type. 请求,则是api下对应的请求. get请求直接加入链接即可. post请求 ...
- hive和sequoiadb对接的问题
使用hive和spark对接的时候,当两个表做JOIN的时候,如果表的数据量很大一定要做 set hive.auto.convert.join=false
- labview中的移位寄存器、循环隧道,自动索引隧道的区别
对于循环结构(For 循环.while循环)而言,循环体内的数据域外部数据的传递是通过以下三种方式: 1.移位寄存器2.循环隧道3.自动索引隧道 第一.各自的区别.作用 循环隧道,就是把数据传入传出循 ...
- 在WindowsXP+IIS5.1下运行ASP.NET MVC3
1. 安装ASP.NET MVC3 http://download.microsoft.com/download/1/4/C/14C0533D-2299-42CD-898C-10AA5156E243/ ...
- 导出Excel多个表多个sheet
protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); ...
- 线程池ThreadPool实现异步多线程
ThreadPool线程池的主要方法: 1. public static Boolean QueueUserWorkItem(WaitCallback wc, Object state); WaitC ...
- Mysql union
union简单来说就是多表链接,主要是用于(模糊)查询,全库搜索 多表搜索需要先将需要查询的表用union连接,然后在每一个union后面添加上相同的where条件 菜鸟教程
- 【bzoj1030】: [JSOI2007]文本生成器 字符串-AC自动机-DP
[bzoj1030]: [JSOI2007]文本生成器 首先把匹配任意一个的个数的问题转化为总个数-没有一个匹配的个数 先构造AC自动机,然后枚举每一位的字母以及在自动机上的位置 f[i][j]为第i ...
- Sublime3插件安装
首先声明一下,小编是做后台开发出身,但是总是想捣鼓一些小的网站出来,可能是完美心作祟,感觉前端这边不能差事,所以就自己上了,一开始是用eclipse来开发的,具体原因忘了,也不知道怎么就开始用Subl ...
- P4559 [JSOI2018]列队
\(\color{#0066ff}{ 题目描述 }\) 作为一名大学生,九条可怜在去年参加了她人生中的最后一次军训. 军训中的一个重要项目是练习列队,为了训练学生,教官给每一个学生分配了一个休息位置. ...