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 2149 [SDOI2009]Elaxia的路线
感觉这题可以模板化. 听说spfa死了,所以要练堆优化dijkstra. 首先对$x_{1},y_{1},x_{2},y_{2}$各跑一遍最短路,然后扫一遍所有边看看是不是同时在两个点的最短路里面,如 ...
- Entity Framework Tutorial Basics(20):Persistence in Entity Framework
Persistence in Entity Framework There are two scenarios when persisting an entity using EntityFramew ...
- Java面试问题列表
- (转)深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的
前言 跟我一起顺藤摸瓜剖析 Artech 老师的 MiniMVC 是如何运行的,了解它,我们就大体了解 ASP.NET MVC 是如何运行的了.既然是“顺藤摸瓜”,那我们就按照 ASP.NET 的执行 ...
- json互转笔记
JSON.parse()与JSON.stringify()的区别 JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"name& ...
- Sum of LCM (lcmsum)
题目 [题目描述] 对于 $ A_1, A_2, \ldots, A_N $ ,求$\sum_{i = 1}^N \sum_{j = 1}^N \mathrm{lcm}(A_i, A_j)$ 的值. ...
- JavaScript——原生js实现瀑布流
瀑布流介绍及实现原理: 瀑布流是一种页面布局,页面上也有多等宽的块(块就页面内容),每一块都是绝对定位(absolute),每个块排列的方式如下:寻找现在高度最小的列,把该块定位到该列下方.需要知道, ...
- P4234 最小差值生成树 LCT维护边权
\(\color{#0066ff}{ 题目描述 }\) 给定一个标号为从 \(1\) 到 \(n\) 的.有 \(m\) 条边的无向图,求边权最大值与最小值的差值最小的生成树. \(\color{#0 ...
- 内核启动后,lcd显示logo失败
针对-s5pv210,但对其他平台也使用 lcd显示logo失败,若显示成功默认的logo是一只企鹅,但是串口打印“Start display and show logo”,但是LCD屏没有显示 ...
- 21.Longest Palindromic Substring(最长回文子串)
Level: Medium 题目描述: Given a string s, find the longest palindromic substring in s. You may assume ...