ReportViewer實例教程

本文轉自:http://www.cnblogs.com/tearer/archive/2010/07/30/1788992.html

 

本示例操作 主要實現
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. 可以看到 打開的數據集設計器 是空的,此時可以將“服務器資源管理器”下的Northwind的表或存儲過程等拉入數據集設計器(如此時 拉入了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>

&nbsp; <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.保存 運行 點擊按鈕 報表效果查看

發佈了120 篇原創文章 · 獲贊 31 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章