博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用General框架开发RDLC报表
阅读量:4340 次
发布时间:2019-06-07

本文共 2389 字,大约阅读时间需要 7 分钟。

RDLC是微软推出的自家的报表软件,虽然没有一些第三方的报表软件强大好用,但是作为VisualStudio集成的报表工具,在客户要求不高的情况下还是非常值得一用的,本文将介绍通过General代码生成器和General框架快速的开发一个报表程序。

第一步、生成RDLC报表文件

传统的开发方式是通过VisualStudio创建RDLC报表文件,但这种方式效率很慢,不适合大量报表开发,而通过General代码生成器可以快速的大量生成报表格式,大大提高开发效率,并且生成的报表文件可以在VisualStudio中打开继续修改,并不影响复杂报表格式的制作。用General代码生成器生成RDLC报表文件的过程如下图所示:

 

生成之后保存为后缀名为.rdlc的报表文件。

第二步、制作报表查看器

如果是WinForm程序,这一步非常简单,只需要新建一个窗体,再从工具箱中将ReportViewer控件拖到窗体上并设置Dock = Fill就可以了。如果工具箱中没有找到ReportViewer,需要手动添加,还有可能工具箱里没有ReportViewer,但手动添加时ReportViewer项已经勾选了,那就需要取消勾选,然后再打开再勾选添加。

RDLC可以通过添加数据集的方式给报表输送数据,但这种方式灵活性太差不适合项目要求。这里,我们采用动态方式给报表输送数据,并做成通用的报表查看器,这样再增加报表时,只需生成新的RDLC文件并指定给报表查看器,再输送指定的数据即可。

所以我们修改报表查看器的后台代码:

 1 
using System;
 2 
using System.Collections.Generic;
 3 
using System.ComponentModel;
 4 
using System.Data;
 5 
using System.Drawing;
 6 
using System.Text;
 7 
using System.Windows.Forms;
 8  
 9 
namespace Sample.Market.WinForm
10 {
11     
public 
partial 
class FrmReport : Form
12     {
13         
///
 
<summary>
14 
        
///
 RDLC文件路径,支持相对路径
15 
        
///
 
</summary>
16 
        
public 
string ReportPath { 
get
set; }
17  
18         
///
 
<summary>
19 
        
///
 报表数据源
20 
        
///
 
</summary>
21 
        
public DataTable DataSource { 
get
set; }
22  
23         
public FrmReport()
24         {
25             InitializeComponent();
26         }
27  
28         
private 
void FrmReport_Load(
object sender, EventArgs e)
29         {
30             
//
 显示报表代码
31 
            reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
32             reportViewer1.LocalReport.ReportPath = 
this.ReportPath;
33             reportViewer1.LocalReport.DataSources.Clear();
34             reportViewer1.LocalReport.DataSources.Add(
new Microsoft.Reporting.WinForms.ReportDataSource(
"
DataSet1
"
this.DataSource));
35             reportViewer1.RefreshReport();
36         }
37     }
38 }

而调用报表查看器打开报表的代码如下:

1             DataTable dt = goodsLogic.GetAllData();
2             FrmReport frm = 
new FrmReport();
3             frm.ReportPath = 
"
Reports\\GoodsReport.rdlc
";
4             frm.DataSource = dt;
5             frm.Show();

GoodsLogicGetAllData方法代码如下:

 1         /// <summary>

2 
        
///
 获取所有数据
3 
        
///
 
</summary>
4 
        
///
 
<returns></returns>
5 
        
public DataTable GetAllData()
6         {
7             
return DataManager.Default.CreateQuery<Goods>().ToTable();
8         }

可以看到,通过General框架很方便的取到报表数据,再调用报表查看器显示报表,代码非常简单,最终显示结果如下:

 

如果需要修改报表的格式,比如列宽、标题等,可以将.rdlc文件在VisualStudio中打开进行编辑,或是在代码生成器中修改模板重新生成报表文件。

大家可能还注意到一个问题,就是报表的列头在下一页不见了,要让列头在每页都显示需要对报表文件进行如下修改:

 

 你可能会觉得每一个报表都这样修改太麻烦,那好,我们来修改模板。

先使用文本比较工具比较一下修改前和修改后的.rdlc文件,发现差别只有一行:

 

那我们相应的在模板中也加入这一行:

重新生成报表文件,再打开报表,可以看到每页都可以显示列头了。 

General代码生成器请移步这里下载:

 

转载于:https://www.cnblogs.com/lgyup/p/4618025.html

你可能感兴趣的文章
“==”运算符与equals()
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
ajax跨域,携带cookie
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>
阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
查看>>