[转]稳步解說:在 WPF 應用程式中选拔 ReportViewer 彰显 rdlc

本文转自: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 應用程式,此應用程式會使用 AdventureWorks二〇〇八LAND2
範例資料庫顯示本機報表。         

须要條件)            


          

 

  • Visual Studio
    Professional 或 Ultimate                               

  • AdventureWorks2010R2
    資料庫的存取權限 (請參閱<慢慢解說:安裝 AdventureWorks
    資料庫
    >)。                
                  

  • 網際網路存取 (用於
    Bing 地圖)                               

在 WPF 應用程式中运用 ReportViewer


  1. [檔案] 成效表中,指向 [開新檔案],再選取 [專案]。                           


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


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


  4. [方案總管]
    中,以滑鼠右鍵按一下你的專案,然後選取 [参预參考]。                           


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


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

    XAML

    複製window.epx.codeSnippet.copyCode(‘CodeSnippetContainerCode_f4182223-7269-44a2-8d84-0f38c7d62400’);)

    <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
    執行個體。接著您將建立
    奥迪Q5DLC 報表,您將在 ReportViewer 控制項中顯示該報表。


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


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


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

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


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


  12. [下一步] 兩次。              
                

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

    現在您的專案中已建立稱為
    AdventureWorks二零零六宝马X52DataSet 的 DataSet
    物件。                           


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


  1. [排列欄位]
    頁面中,將全数可用的欄位拖曳到 [值]
    窗格。                             

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

  3. 接著按一遍
    [下一步],關閉
    [報表精靈]。                           

    接著,您會加盟程式碼將
    ReportViewer 指向你建立的新報表,以及從 AdventureWorks二零零六CR-V2DataSet
    將資料参与至 ReportViewer。                           

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

    C#

    複製window.epx.codeSnippet.copyCode(‘CodeSnippetContainerCode_7b9129ec-19a1-41b1-a17d-5cdcc0578bf9’);)

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

    C#

    複製window.epx.codeSnippet.copyCode(‘CodeSnippetContainerCode_19afaf56-9fb1-4fd1-8573-270718250a1b’);)

    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;
        }
    }
    

  2. [偵錯] 作用表中選取 [開始偵錯],以執行 WPF 應用程式。

     

相关文章