轉:ReportViewer控制項使用方法

來源:互聯網
上載者:User

標籤:io   ar   os   使用   sp   for   檔案   on   資料   

a. ReportViewer關聯Report1.rdlc的簡單呈現
b. 對帶有報表參數的Report1.rdlc的呈現
c. 利用程式產生的DataSet 填充報表
d. 調用預存程序 產生DataSet 填充報表
==========
簡單的呈現 
==========
1. 開啟VS2005,檔案->建立->網站 選擇語言種類(C#)
2. 在該解決方案下 設計其已經產生的Default.aspx
3. 將工具箱-資料下的ReportViewer 拉入Default.aspx的設計介面
4. 在用滑鼠選中ReportViewer1時 可以看到其右上方的 小三角 表徵圖
5. 用滑鼠點擊該小三角 將展開 ReportViewer任務 捷徑功能表
6. 由於本項目 目前還沒有做好的報表 所以 選擇 設計新報表
7. 點擊 設計新報表 後 將呈現報表Report1.rdlc的設計介面
8. 由於本項目 目前還沒有做好的網站資料來源 
   所以 此時要添加新資料來源
  (如果沒有呈現“網站資料來源”介面,可以點擊報表設計介面,
   此時上方菜單中多出現“資料”,“報表”等選項
   可以在“資料”菜單下,選擇“顯示資料來源”)
9. 點擊“添加新資料來源” 會出現“TableAdapter 設定精靈”
10. 選擇資料連線(如串連到原生Northwind資料庫),下一步
11. 選擇是否要將連接字串儲存到應用程式設定檔中,下一步
12. 選擇命令類型,此時 可以 點擊 取消 按鈕,退出嚮導
13. 全部儲存
14. 選擇 視圖 菜單 下 “伺服器總管”,
    可以看到剛才所建立的資料連線,
    可以看到Northwind資料庫下的表,視圖,預存程序,函數
15. 在解決方案的樹下 找到並開啟App_Code檔案夾下的DataSet1.xsd資料集
16. 可以看到 開啟的DataSet 設計工具 是空的,此時可以將“伺服器總管”
    下的Northwind的表或預存程序等 拉入 DataSet 設計工具
    (如此時 拉入了Orders表 和 Sales by Year這個預存程序)
17. 全部儲存 
18. 雙擊Report1.rdlc,開啟報表設計介面
    將此時的報表設計工具箱中的 報表專案 的  表 拉入 報表設計介面
19. 選擇 “資料”菜單下的“顯示資料來源”,
    可以在網站資料來源下 看到 DataSet1 下的 兩個 表 Orders 和 Sales by Year
20. 此時選擇Orders下的任意欄位 (如OrderID 和 CustomerID)
    拉到Report1.rdlc設計介面的表的“詳細資料”處 用於報表顯示
21. 全部儲存
22. 回到Default.aspx的設計介面,為ReportViewer1 綁定報表
    選擇ReportViewer1顯示剛才設計好的Report1.rdlc
23. 全部儲存,按F5或Ctrl+F5 運行,以查看初步效果

======================================
接下來要為Report1.rdlc添加一個報表參數 
======================================

24. 回到報表Report1.rdlc的設計介面
    點擊 報表 菜單 下的“報表參數”
25. 在報表參數在設定框中 添加一個報表參數 進行相關設定 並 確定以儲存
   (如其參數名稱為rptParaA,類型為String)
26. 拉入一個文字框的報表專案到Report1.rdlc的設計介面 以做為該報表的標題顯示
27. 選中並按右鍵該文字框,在彈出的菜單中選擇“運算式”,
    進入“編輯運算式”的對話方塊
28. 在“編輯運算式”的對話方塊中,選擇 參數,
    並雙擊剛才設定的rptParaA,使文字框的值=Parameters!rptParaA.Value
29. 儲存對Report1.rdlc的修改
30. 因為新的Report1.rdlc報表的文字框需要有報表參數值的傳入
    所以要在ReportViewer1 對Report1.rdlc的呈現時
    對Default.aspx.cs的編輯
31. 在Default.aspx.cs加入引用
    using Microsoft.Reporting.WebForms;    
    在Page_Load中加入如下代碼


        ReportParameter rptParaA = new ReportParameter("rptParaA", "測試報表參數");
        ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rptParaA });

32.儲存並運行 以查看效果

=========================================
接下來,需要對所要轉譯報表資料 進行定製
也就是通過設計DataSet 
用符合需要的資料對報表進行資料綁定和呈現
=========================================

33.設定ReportViewer1的Visible為false
34.在Default.aspx的設計介面 加入一個按鈕Button1
   將通過此按鈕的Click事件 實現對資料庫的訪問 以及DataSet的資料填充
   和對ReportViewer1的資料綁定
35. Default.aspx.cs加入引用
    using System.Data.SqlClient;
    using Microsoft.Reporting.WebForms;

    Button1_Click中的程式碼範例如下

        SqlConnection myConn = new SqlConnection("Data Source=192.168.0.36;Initial Catalog=Northwind;User ID=sa;Password=sa");
        SqlDataAdapter myda = new SqlDataAdapter("select top 5 * from orders", myConn);
        DataSet myds = new DataSet();
        myConn.Open();
        myda.Fill(myds);
        myConn.Close();

        ReportViewer1.Visible = true;

        ReportParameter rptParaA = new ReportParameter("rptParaA", "測試報表參數");
        ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rptParaA });
  
        ReportDataSource rds = new ReportDataSource("DataSet1_Orders", myds.Tables[0]);
        ReportViewer1.LocalReport.DataSources.Clear();
        ReportViewer1.LocalReport.DataSources.Add(rds);
        ReportViewer1.LocalReport.Refresh();

 
   注意ReportDataSource rds = new ReportDataSource("DataSet1_Orders", myds.Tables[0]);
       的"DataSet1_Orders"是與前台html程式的

        
            
                
                    
                
            
        
       中的的Name="DataSet1_Orders"是一致的

    可以通過對DataSet的填充時的sql語句等的定製 來得到所需要的資料 以便報表轉譯
    需要注意的是由於ReportViewer1此時的關聯報表為Report1.rdlc,所以DataSet的Tables[0]中的結構
    一定要包含Report1.rdlc所呈現的欄位,所以,這裡的Sql語句為select top 5 * from orders
36.儲存 運行 點擊Button1 以便 報表轉譯

===============================================
如果 報表所要呈現的資料 來源於預存程序
那麼 在裝載DataSet時 使其資料來源於預存程序即可
===============================================

37.右擊項目 添加新項 ,選擇 報表,向項目中加入Report2.rdlc,
   設定其呈現的資料來源為預存程序 Sales by Year
   同樣的在Report2.rdlc的設計介面 加入“表”報表專案
   並將網站資料來源下的DataSet1下的Sales by Year表中的欄位
   拉入報表專案“表”在詳細資料中 進行顯示
38.如同Default.aspx 向項目中添加新的頁面Default2.aspx
   向Default2.aspx加入一個Button 和 ReportViewer1
   並設定ReportViewer1所要轉譯報表為Report2.rdlc
   設定ReportViewer1的Visible為false
   雙擊Button 進行其Click事件的編寫
   設定Default2.aspx為項目的起始頁
39.在Default2.aspx.cs加入引用
   using System.Data.SqlClient;
   using Microsoft.Reporting.WebForms;
40.Button1_Click的事件程式碼範例如下


    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection myConn = new SqlConnection("Data Source=192.168.0.36;Initial Catalog=Northwind;User ID=sa;Password=sa");
        SqlDataAdapter myda = new SqlDataAdapter("Sales by Year", myConn);
        myda.SelectCommand.Parameters.AddWithValue("@Beginning_Date", "1997-10-10");
        myda.SelectCommand.Parameters.AddWithValue("@Ending_Date", "2000-10-10");
        myda.SelectCommand.CommandType = CommandType.StoredProcedure;
        DataSet myds = new DataSet();
        myConn.Open();
        myda.Fill(myds);
        myConn.Close();

        ReportViewer1.Visible = true;
        
        ReportDataSource rds = new ReportDataSource("DataSet1_Sales_by_Year", myds.Tables[0]);
        ReportViewer1.LocalReport.DataSources.Clear();
        ReportViewer1.LocalReport.DataSources.Add(rds);

        ReportViewer1.LocalReport.Refresh();
    }


41.儲存 運行 點擊按鈕 報表效果查看

轉:ReportViewer控制項使用方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.