WPF中使用ReportViewer报表
本篇博客将介绍如何在WPF中使用ReportViewer控件。
1. 环境准备:下载安装最新版ReportViewer(PS:需要安装Microsoft SQL Server System CLR Types package);如果您的开发工具是Visual Studio 2015,记得安装Microsoft SQL Server Tools,因为需要安装ReportViewer报表设计器。
2. 下面我们通过一个例子(示例图书品种报表)来演示,
1). 新建一个WPF项目WPFBooksReport,
2). 添加Entities文件夹,并添加Book类,
public class Book
{
public string Name { get; set; } public string Author { get; set; } public string ISBN { get; set; } public decimal Price { get; set; }
}
3). 添加名称为BookReport的RDLC报表,
报表设计器主界面
修改报表属性:
4. 新建DataSet,名称BookDataSet,然后新建DataSource,DataSource的数据来源于Object,因为在示例程序中为了降低复杂度,直接使用Book类作为数据来源了。
这样,RDLC报表的数据源便设置成功了。下一步设计报表的样子。
5). 在报表中插入一个Table,然后设置数据源,
6). 新建WPF UserControl,BookReportCtrl.xaml,在项目中添加Microsoft.ReportViewer.WinForms和WindowsFormsIntegration引用
BookReportCtrl.xaml
<UserControl x:Class="WPFBooksReport.BookReportCtrl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:rv="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms"
xmlns:local="clr-namespace:WPFBooksReport"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<WindowsFormsHost>
<rv:ReportViewer x:Name="bookReportViewer"/>
</WindowsFormsHost>
<local:MaskLayer x:Name="maskLayer" Visibility="Collapsed"/>
</Grid>
</UserControl>
Code:
public BookReportCtrl()
{
InitializeComponent(); this.Loaded += BookReportCtrl_Loaded; this.bookReportViewer.RenderingComplete += BookReportViewer_RenderingComplete;
} private void BookReportCtrl_Loaded(object sender, RoutedEventArgs e)
{
maskLayer.Visibility = Visibility.Visible; // 模拟一个DataTable DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Author", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Columns.Add("ISBN", typeof(string)); DataRow dr = dt.NewRow();
dr["Name"] = "C# In Depth";
dr["Author"] = "Jon Skeet";
dr["Price"] = 72.0m;
dr["ISBN"] = "B3456123"; dt.Rows.Add(dr); ReportDataSource reportDataSource = new ReportDataSource(); reportDataSource.Name = "BookDataSet";
reportDataSource.Value = dt; bookReportViewer.LocalReport.ReportPath = Directory.GetCurrentDirectory() + "\\BookReport.rdlc";
bookReportViewer.LocalReport.DataSources.Add(reportDataSource); bookReportViewer.RefreshReport();
} private void BookReportViewer_RenderingComplete(object sender, Microsoft.Reporting.WinForms.RenderingCompleteEventArgs e)
{
maskLayer.Visibility = Visibility.Collapsed;
}
6. 新建BookReportWindow.xaml来承载报表。
7. 运行程序,
到这里,这个示例程序就完成了。
代码点击这里下载。
感谢您的阅读。
WPF中使用ReportViewer报表的更多相关文章
- 在 ReportViewer 报表中使用表达式
from:http://www.cnblogs.com/jobin/articles/1152213.html 有些表达式在报表中很常用.其中包括更改报表中的数据外观的表达式.计算总数的表达式和更改报 ...
- [转]逐步解說:在 WPF 應用程式中使用 ReportViewer 显示 rdlc
本文转自:http://msdn.microsoft.com/zh-tw/library/hh273267 若要在 WPF 應用程式中使用 ReportViewer 控制項,您需要將 ReportVi ...
- 在VS2012后的版本中做数据报表时,提示尚未指定报表“Report1”的报表定义
有一群的朋友在用VS2012做数据报表时,老是提示 本地报表处理期间出错. 尚未指定报表“Report1”的报表定义 未将对象引用设置到对象的实例. 我看了一下,步骤没错,我用VS2010做了一下,一 ...
- ASP.NETserver控件使用之Reportviewer 报表
1. Reportviewer 报表 1.1. Reportviewer控件 注:本教程附2个事例: l 演练:在本地处理模式下将数据库数据源与 ReportViewer W ...
- VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表
原文:VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表 Excel具有强大的图表显示.分析功能,这点毋庸置疑,但是如果将常规MIS系统中的数据以报表的形式在Excel中显示,却并不那 ...
- 在Bootstrap开发框架中使用Grid++报表
之前在随笔<在Winform开发中使用Grid++报表>介绍了在Winform环境中使用Grid++报表控件,本篇随笔介绍在Bootstrap开发框架中使用Grid++报表,也就是Web环 ...
- 在mvc视图中实现rdlc报表展示(补充)
上篇: 在mvc视图中实现rdlc报表展示 在上一遍中,由于不知道如何在aspx.cs后台中实例化abp的IxxxAppService.cs的接口,我采取的方式是在视图页中把查询出的数据存储到aspx ...
- 在mvc视图中实现rdlc报表展示
需求:在view视图页面中嵌入rdlc报表,rdlc的xml为动态传入的xml字符串.本项目是基于abp框架 可能出现问题: 1.rdlc报表是由asp.net的服务器控件ReportViewer来支 ...
- 在WPF中使用依赖注入的方式创建视图
在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...
随机推荐
- HTML锚点参考II
锚点使用:<a href="#a">会直接找到id为a的元素的位置,不需要其他设置.如此简单! <a href="#a"> <li ...
- 如何在maven中添加本地jar包
mvn install:install-file -DgroupId=mytest-DartifactId=test-Dversion=1.1 -Dpackaging=jar -Dfile=d:\te ...
- FastReport报表控件使用技巧总结
FastReport报表控件使用技巧总结 1.FastReport中如何访问报表中的对象? 可以使用FindObject方法. TfrxMemoView(frxReport1.FindObject(' ...
- Java for LeetCode 213 House Robber II
Note: This is an extension of House Robber. After robbing those houses on that street, the thief has ...
- JS 异步加载的方法
(1) defer,只支持IE : <script type="text/javascript" defer="defer"> </scrip ...
- Js 旋转木马 轮播
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vs2010 快捷键大全
vs2010 快捷键大全 VS2010版快捷键 Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 ...
- 汉企PHP开班
明天PHP正式开班,没什么大目标 ,在四个半月的时间吧基础知识掌握牢固,自信的面对企业.
- eclipse修改jdk后版本冲突问题
将安装的jdk1.8改为1.7之后出现了很淡疼的问题 修改工程下.setting/ org.eclipse.jdt.core.prefs eclipse.preferences.version=1or ...
- 【编程题目】求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case和条件语句
看到这个问题,第一个反应是真变态啊. 然后,直觉是不能用循环就只能用递归了.可递归怎么跳出来却遇到了麻烦, 我连goto语句都考虑了也没弄好. 后来想到一个非常NC的方法:查找表. 如果n限定一个比较 ...