本文转自:http://msdn.microsoft.com/zh-tw/library/hh273267

若要在 WPF 應用程式中使用 ReportViewer 控制項,您需要將 ReportViewer 組件加入至專案,並且以程式設計方式設定該組件。

WPF 支援 Windows Form 控制項,但是 ReportViewer 控制項不對 WPF 提供任何自動組態,如同在 Windows Form 應用程式中一樣。

在 WPF 應用程式中,您會在 WindowsFormsHost 控制項內主控 ReportViewer 控制項。

WindowsFormsHost 控制項對呼叫程式碼要求完全信任,也就是 Windows 中 WPF 用戶端應用程式的信任層級。

在 WPF 瀏覽器應用程式中,應用程式預設會以部分信任執行,而且您必須執行下列操作 (如需詳細資訊,請參閱 WPF XAML 瀏覽器應用程式概觀):

  • 將 WPF 瀏覽器應用程式設定為在完全信任的環境下執行。

  • 確定部署網站在用戶端瀏覽器中是 [近端內部網路] 或 [信任的網站區域]。

在本逐步解說中,您將建立一個 WPF 應用程式,此應用程式會使用 AdventureWorks2008R2 範例資料庫顯示本機報表。

在 WPF 應用程式中使用 ReportViewer

  1. 在 [檔案] 功能表中,指向 [開新檔案],再選取 [專案]。

  2. 在 [新專案] 對話方塊中,選取 [WPF 應用程式] 專案類型,為您的專案命名,然後按一下 [確定]。

  3. 從 [工具箱] 將 [WindowsFormsHost] 控制項拖曳到 MainWindow.xaml 的設計介面上。                              這樣會將 WindowsFormstHost 所需的組件加入至專案。

  4. 在 [方案總管] 中,以滑鼠右鍵按一下您的專案,然後選取 [加入參考]。

  5. 在 [加入參考] 對話方塊的 [.NET] 索引標籤中,選取 [Microsoft.ReportViewer.WinForms] 組件,然後按一下 [確定]。

  6. 在 XAML 檢視中,加入下列反白顯示的各行:

    <Window x:Class="WpfReportApplication.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:rv="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
    <WindowsFormsHost><rv:ReportViewer x:Name="_reportViewer"/></WindowsFormsHost>
    </Grid>
    </Window>

    這樣會在 XAML 頁面中建立名為 _reportViewer 的 ReportViewer 執行個體。接著您將建立 RDLC 報表,您將在 ReportViewer 控制項中顯示該報表。

  7. 在 [方案總管] 中,以滑鼠右鍵按一下專案,指向 [加入],然後選取 [新項目]。

  8. 在 [加入新項目] 對話方塊中,選取 [報表精靈],保留預設名稱,然後按一下 [加入]。                              此時會啟動 [報表精靈] 與 [資料來源組態精靈]。

  9. 在 [資料來源組態精靈] 中選取 [資料庫],按 [下一步],選取 [資料集],然後再次按 [下一步]。

  10. 按一下 [選擇您的資料連接] 頁面上的 [新增連接]。                              如果您看見 [選擇資料來源] 對話方塊,請選取 [Microsoft SQL Server] 並按一下 [繼續]。

  11. 在 [伺服器名稱] 方塊中,輸入裝載 AdventureWorks2008R2 資料庫的伺服器名稱,然後在 [選取或輸入資料庫名稱] 中,選取 [AdventureWorks2008R2],再按一下 [確定]。

  12. 按 [下一步] 兩次。

  13. 展開 [選擇您的資料庫物件] 頁面上的 [資料表] 節點,然後選取 [SalesOrderDetail (Sales)] 資料表的核取方塊,再按一下 [完成]。

    現在您的專案中已建立稱為 AdventureWorks2008R2DataSet 的 DataSet 物件。

  14. 在 [報表精靈] 中,按 [下一步]。

  15. 在 [排列欄位] 頁面中,將所有可用的欄位拖曳到 [值] 窗格。

  16. 這樣會建立簡單的表格式資料表,用於顯示範例資料。

  17. 接著按三次 [下一步],關閉 [報表精靈]。

    接著,您會加入程式碼將 ReportViewer 指向您建立的新報表,以及從 AdventureWorks2008R2DataSet 將資料加入至 ReportViewer。

  18. 開啟 MainWindow.xaml.cs,並將反白顯示的行加入至 MainWindow() 建構函式:

    public MainWindow()
    {
    InitializeComponent();
    _reportViewer.Load += ReportViewer_Load;
    }
  19. 將下列程式碼加入至類別定義中 MainWindow() 建構函式下方:

    private bool _isReportViewerLoaded;
    
    private void ReportViewer_Load(object sender, EventArgs e)
    {
    if (!_isReportViewerLoaded)
    {
    Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = new Microsoft.Reporting.WinForms.ReportDataSource();
    AdventureWorks2008R2DataSet dataset = new AdventureWorks2008R2DataSet(); dataset.BeginInit(); reportDataSource1.Name = "DataSet1"; //Name of the report dataset in our .RDLC file
    reportDataSource1.Value = dataset.SalesOrderDetail;
    this._reportViewer.LocalReport.DataSources.Add(reportDataSource1);
    this._reportViewer.LocalReport.ReportEmbeddedResource = "<VSProjectName>.Report1.rdlc"; dataset.EndInit(); //fill data into adventureWorksDataSet
    AdventureWorks2008R2DataSetTableAdapters.SalesOrderDetailTableAdapter salesOrderDetailTableAdapter = new AdventureWorks2008R2DataSetTableAdapters.SalesOrderDetailTableAdapter();
    salesOrderDetailTableAdapter.ClearBeforeFill = true;
    salesOrderDetailTableAdapter.Fill(dataset.SalesOrderDetail); _reportViewer.RefreshReport(); _isReportViewerLoaded = true;
    }
    }
  20. 在 [偵錯] 功能表中選取 [開始偵錯],以執行 WPF 應用程式。

[转]逐步解說:在 WPF 應用程式中使用 ReportViewer 显示 rdlc的更多相关文章

  1. Visual Studio 跨平台開發實戰(3) - Xamarin iOS 多頁面應用程式開發 (转帖)

    前言 在前一篇教學中, 我們學會如何使用Visual Studio 搭配Xcode 進行iOS基本控制項的操作. 但都是屬於單一畫面的應用程式. 這次我們要來練習如何透過Navigation Cont ...

  2. WPF老矣,尚能饭否——且说说WPF今生未来(中):策略

    本文接上文<WPF老矣,尚能饭否——且说说WPF今生未来(上):担心>继续. “上篇”中部分精彩的点评: 虽然WPF不再更新了,但是基于WPF的技术还是在发展着,就比如现在的WinRT,只 ...

  3. WPF中使用ReportViewer报表

    本篇博客将介绍如何在WPF中使用ReportViewer控件. 1. 环境准备:下载安装最新版ReportViewer(PS:需要安装Microsoft SQL Server System CLR T ...

  4. WPF Image控件中的ImageSource与Bitmap的互相转换

    原文:WPF Image控件中的ImageSource与Bitmap的互相转换  1.从bitmap转换成ImageSource [DllImport("gdi32.dll", ...

  5. WPF编程,TextBlock中的文字修饰线(上划线,中划线,基线与下划线)的使用方法。

    原文:WPF编程,TextBlock中的文字修饰线(上划线,中划线,基线与下划线)的使用方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_4330 ...

  6. VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法。

    原文:VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net ...

  7. VS编程,WPF单独更改TextBlock中部分文字格式的一种方法

    原文:VS编程,WPF单独更改TextBlock中部分文字格式的一种方法 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/articl ...

  8. WPF编程,C#中对话框自动关闭的一种方法。

    原文:WPF编程,C#中对话框自动关闭的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/8 ...

  9. Visual Studio 跨平台開發實戰(5) - Xamarin Android 多頁面應用程式開發 (转帖)

    前言 大部份的Android 都具有實體或虛擬的Back鍵. 因此在處理多頁面應用程式時, 與先前所介紹的iOS Navigation controller 比較起來會簡單許多. 1. 開啟Visua ...

随机推荐

  1. 配置tfs2017的agent

    tfs支持四种验证方式,分别是:PAT.Negotiate.Integrated.Alternate 我们使用Negotiate方式 首先,登录tfs服务器,设置iis的身份验证  添加一个Negot ...

  2. vc++6.0创建console32之.c的应用程序详解

    文件-->新建-->win32-->取一个名字,确定 文件-->新建-->c++Source-->取一个名字,记住以.c为后缀,确定 编写简单的程序调试

  3. 关于桌面程序被安全软件误判为HEUR:Trojan.Win32.Generic的解决方案

    最近写了一个桌面程序,里面用了些读取系统环境变量.提取文件图标.启动外部程序之类的操作. 然后…………卡巴斯基就把它识别成了HEUR:Trojan.Win32.Generic………… 咱遵纪守法好程序 ...

  4. B.1 接口

    几乎所有要学习的接口都位于 System.Collections.Generic 命名空间.图B-1展示了.NET4.5以前主要接口间的关系,此外还将非泛型的 IEnumerable 作为根接口包括了 ...

  5. case....when ...多重判断

    CASE...WHEN 进行多重判断 CASE WHEN A  IS NOT NULL THEN B WHEN C IS NULL THEN CASE WHEN D IS NOT NULL THEN ...

  6. mac上的svn命令

    Mac 终端添加代码到SVN从SVN拉取代码步骤:1.cd /Users/指定路径(本地路径)2.svn checkout https://xxx.xxx.xx/svn/project(服务器路径) ...

  7. elasticsearch match和match_phrase匹配原则(十)

    分词测试 分词后倒排索引结果:可以通过http://127.0.0.1:9200/_analyze 测试 { "analyzer":"ik_max_word", ...

  8. [网络流24题#9] [cogs734] 方格取数 [网络流,最大流最小割]

    将网格分为两部分,方法是黑白染色,即判断(i+j)&1即可,分开后从白色格子向黑色格子连边,每个点需要四条(边界点可能更少),也就是每个格子周围的四个方向.之后将源点和汇点分别于黑白格子连边, ...

  9. TOYS POJ 2318 计算几何 叉乘的应用

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15060   Accepted: 7270 Description Calc ...

  10. [bzoj1704][Usaco2007 Mar]Face The Right Way 自动转身机_贪心

    Face The Right Way 自动转身机 bzoj-1704 Usaco-2007 Mar 题目大意:不想描述题意系列++... ...题目链接 注释:略. 想法:我们直接枚举k,然后从左往右 ...