系列回顾
从上一篇文章一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)开始我带领大家进入WinForm篇,并且使用示例的形式详细的演示了数据表对象的查询与列表的手工绑定。
本文论点
今天我将在上一篇文章的基础上介绍信息系统的另一个非常重要的功能,报表与打印,本文要实现的功能就是把商品字典的查询结果(已经显示在UI)打印出来。
本文结合商品字典的查询我介绍基于ORM实体的报表制做技术与程序中如何应用报表,具体的说就是,如果根据现有的数据对象(数据表对象)建立报表的定义,以及如何在程序中使用报表打印、预览组件,并用商品字典的查询结果(数据表对象)做为报表的填充数据源。
下面我将先介绍报表的制作:
制做报表
运行报表设计器ReportDesigner.Start.exe,选择文件菜单的新建--->对象报表,打开“新建数据对象报表”对话框:
切换到“数据对象”Tab页,点击“浏览”选择程序集Product.DAL.SQLServer.dll,然后在对象下拉列表中选择“Product.DAL.SQLServer.Product”,然后确定打开设计界面:
上图是报表设计器根据数据实体自动生成的报表,我们需要对其进行修改,修改的合理和好看一些,并预览一下:
在这里面说明一个问题,因为报表是基于数据表对象建立的,没有连接数据库,预览数据是随机生成的,最后我们把报表定义保存到文件中,比如保持为“商品字典.rdl”,这样我们完成了报表的制度。
使用报表
报表制做完成了,接下来的任务就是如何在程序中使用这个报表,首先我们在Product.UI中引用RdlEngine.dll、RdlViewer.dll、EAS.Report.DAL.Interface.dll、EAS.Report.Controls.dll四个文件,然后我们来编写工具条的打印按钮的Click事件处理代码:
2 {
3 if ( this .lvInfo.Items.Count == 0 )
4 {
5 MessageBox.Show( " 没有需要打印的数据! " , " 提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
6 return ;
7 }
8
9 if ( this .printForm == null )
10 this .printForm = new RDLViewDialog();
11
12 //
13 System.IO.TextReader textReader = null ;
14 try
15 {
16 string fileName = Path.Combine(Application.StartupPath, " Reports\\商品字典.rdl " );
17 textReader = new System.IO.StreamReader(fileName);
18 this .printForm.SourceRdl = textReader.ReadToEnd();
19 }
20 finally
21 {
22 if (textReader != null )
23 textReader.Close();
24 }
25
26 this .printForm.DataObject = this .lvInfo.Tag;
27 this .printForm.PrintPreview();
28 }
编译运行程序,看看效果:
有关本例子所涉及的数据表结构请参考基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文,有关数据对象模型定义文件、文档、DDL脚本请下载:http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本文完整代码下载:Product.Demo.rar。
链接
一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录
QQ群:116773358