Asp.net簡單報表實現方案

來源:互聯網
上載者:User

一、使用vs內建的ReportViewer控制項

本樣本操作 主要實現
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程式的

         <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" Height="400px" Visible="False" Width="400px">
             <LocalReport ReportPath="Report1.rdlc">
                 <DataSources>
                     <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1_Orders" />
                 </DataSources>
             </LocalReport>
         </rsweb:ReportViewer>
        中的<DataSources>的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.儲存 運行 點擊按鈕 報表效果查看

二、使用免費的第三方控制項WebChart

官方網址:http://www.carlosag.net/Tools/WebChart/ 

使用方法:http://www.cnblogs.com/dotnet010/archive/2007/12/29/1019305.html
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.