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 ...
随机推荐
- Luogu 4310 绝世好题
BZOJ 4300 先把这堆东西丢到博客里,以后再复习. 首先考虑暴力的$dp$,设$f_i$表示以$i$结尾的满足条件的序列的最长长度,有: $f_i = max(f_j) + 1$ $j & ...
- 学会使用postman工具模拟请求-----待补充
登录: backstop 密码:backstop的密码 记得加上header,在swagger中有content-type. 请求,则是api下对应的请求. get请求直接加入链接即可. post请求 ...
- C#之WinForm界面分辨率问题
在做上一个C#小工具的时候,当时为了处理界面最大化,分辨率问题,只是简单的用各种···Panle控价简单随意的处理控件的大小位置,字体什么的就随缘了(貌似有点不负责任啊,嘿嘿~). 所以在开始第二个C ...
- c# 创建XML文档,解析XML文档
1.静态函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...
- IIS并发
https://www.cnblogs.com/xinaixia/p/5945678.html
- C# System.Timers.Timer定时器的使用和定时自动清理内存应用
项目比较大有时候会比较卡,虽然有GC自动清理机制,但是还是有不尽人意的地方.所以尝试在项目启动文件中,手动写了一个定时器,定时清理内存,加快项目运行速度. public class Program { ...
- Django之视图与模板以及在模板中使用bootstrap
从url中也可以传递参数给后台进行处理.比如http://127.0.0.1:8001/add/?a=4&b=5. 这个链接传入a=4,b=5.后台将进行a+b的处理 新增处理函数 def a ...
- Python3中集合的混合使用
比较简单没什么好说的: list_1 = [1,2,3,4,6,3,2,5,7,8,2,1] list_1 = set(list_1) list_1.add(999) list_2 = set([2, ...
- Js判断参数(String,Array,Object)是否为undefined或者值为空
在一些前端控件要提交数据到服务器端的数据验证过程中,需要判断提交的数据是否为空.如果是普通表单的字符串数据,只需要在 trim 后判断 length 即可,而这里需要的数据可以是各种不同的类型,通过 ...
- Eclipse中使用Spring IOC容器的具体方法
1.通过IOC容器创建对象,并为属性赋值 在IOC容器本身对象创建时(xml文件加载时),会将配置文件中配置好的bean先创建出来,按照xml文件中配置的先后顺序创建 <bean id=&quo ...