VS2005中ReportViewer 本地模式下报表呈现 入门示例
本示例操作 主要實(shí)現(xiàn)
a. ReportViewer關(guān)聯(lián)Report1.rdlc的簡(jiǎn)單呈現(xiàn)
b. 對(duì)帶有報(bào)表參數(shù)的Report1.rdlc的呈現(xiàn)
c. 利用程式生成的DataSet 填充報(bào)表
d. 調(diào)用存儲(chǔ)過(guò)程 生成DataSet 填充報(bào)表
==========
簡(jiǎn)單的呈現(xiàn)
==========
1. 打開(kāi)VS2005,文件->新建->網(wǎng)站 選擇語(yǔ)言種類(C#)
2. 在該解決方案下 設(shè)計(jì)其已經(jīng)生成的Default.aspx
3. 將工具箱-數(shù)據(jù)下的ReportViewer 拉入Default.aspx的設(shè)計(jì)界面
4. 在用鼠標(biāo)選中ReportViewer1時(shí) 可以看到其右上角的 小三角 圖標(biāo)
5. 用鼠標(biāo)點(diǎn)擊該小三角 將展開(kāi) ReportViewer任務(wù) 快捷菜單
6. 由于本項(xiàng)目 目前還沒(méi)有做好的報(bào)表 所以 選擇 設(shè)計(jì)新報(bào)表
7. 點(diǎn)擊 設(shè)計(jì)新報(bào)表 后 將呈現(xiàn)報(bào)表Report1.rdlc的設(shè)計(jì)界面
8. 由于本項(xiàng)目 目前還沒(méi)有做好的網(wǎng)站數(shù)據(jù)源
?? 所以 此時(shí)要添加新數(shù)據(jù)源
? (如果沒(méi)有呈現(xiàn)“網(wǎng)站數(shù)據(jù)源”界面,可以點(diǎn)擊報(bào)表設(shè)計(jì)界面,
?? 此時(shí)上方菜單中多出現(xiàn)“數(shù)據(jù)”,“報(bào)表”等選項(xiàng)
?? 可以在“數(shù)據(jù)”菜單下,選擇“顯示數(shù)據(jù)源”)
9. 點(diǎn)擊“添加新數(shù)據(jù)源” 會(huì)出現(xiàn)“TableAdapter 配置向?qū)А?br />10. 選擇數(shù)據(jù)連接(如連接到本機(jī)的Northwind數(shù)據(jù)庫(kù)),下一步
11. 選擇是否要將連接字符串保存到應(yīng)用程序配置文件中,下一步
12. 選擇命令類型,此時(shí) 可以 點(diǎn)擊 取消 按鈕,退出向?qū)?br />13. 全部保存
14. 選擇 視圖 菜單 下 “服務(wù)器資源管理器”,
??? 可以看到剛才所建立的數(shù)據(jù)連接,
??? 可以看到Northwind數(shù)據(jù)庫(kù)下的表,視圖,存儲(chǔ)過(guò)程,函數(shù)
15. 在解決方案的樹(shù)下 找到并打開(kāi)App_Code文件夾下的DataSet1.xsd數(shù)據(jù)集
16. 可以看到 打開(kāi)的數(shù)據(jù)集設(shè)計(jì)器 是空的,此時(shí)可以將“服務(wù)器資源管理器”
??? 下的Northwind的表或存儲(chǔ)過(guò)程等 拉入 數(shù)據(jù)集設(shè)計(jì)器
??? (如此時(shí) 拉入了Orders表 和 Sales by Year這個(gè)存儲(chǔ)過(guò)程)
17. 全部保存
18. 雙擊Report1.rdlc,打開(kāi)報(bào)表設(shè)計(jì)界面
??? 將此時(shí)的報(bào)表設(shè)計(jì)工具箱中的 報(bào)表項(xiàng) 的? 表 拉入 報(bào)表設(shè)計(jì)界面
19. 選擇 “數(shù)據(jù)”菜單下的“顯示數(shù)據(jù)源”,
??? 可以在網(wǎng)站數(shù)據(jù)源下 看到 DataSet1 下的 兩個(gè) 表 Orders 和 Sales by Year
20. 此時(shí)選擇Orders下的任意字段 (如OrderID 和 CustomerID)
??? 拉到Report1.rdlc設(shè)計(jì)界面的表的“詳細(xì)資料”處 用于報(bào)表顯示
21. 全部保存
22. 回到Default.aspx的設(shè)計(jì)界面,為ReportViewer1 綁定報(bào)表
??? 選擇ReportViewer1顯示剛才設(shè)計(jì)好的Report1.rdlc
23. 全部保存,按F5或Ctrl+F5 運(yùn)行,以查看初步效果
======================================
接下來(lái)要為Report1.rdlc添加一個(gè)報(bào)表參數(shù)
======================================
24. 回到報(bào)表Report1.rdlc的設(shè)計(jì)界面
??? 點(diǎn)擊 報(bào)表 菜單 下的“報(bào)表參數(shù)”
25. 在報(bào)表參數(shù)在設(shè)置框中 添加一個(gè)報(bào)表參數(shù) 進(jìn)行相關(guān)設(shè)置 并 確定以保存
?? (如其參數(shù)名稱為rptParaA,類型為String)
26. 拉入一個(gè)文本框的報(bào)表項(xiàng)到Report1.rdlc的設(shè)計(jì)界面 以做為該報(bào)表的標(biāo)題顯示
27. 選中并右鍵單擊該文本框,在彈出的菜單中選擇“表達(dá)式”,
??? 進(jìn)入“編輯表達(dá)式”的對(duì)話框
28. 在“編輯表達(dá)式”的對(duì)話框中,選擇 參數(shù),
??? 并雙擊剛才設(shè)置的rptParaA,使文本框的值=Parameters!rptParaA.Value
29. 保存對(duì)Report1.rdlc的修改
30. 因?yàn)樾碌腞eport1.rdlc報(bào)表的文本框需要有報(bào)表參數(shù)值的傳入
??? 所以要在ReportViewer1 對(duì)Report1.rdlc的呈現(xiàn)時(shí)
??? 對(duì)Default.aspx.cs的編輯
31. 在Default.aspx.cs加入引用
??? using Microsoft.Reporting.WebForms;???
??? 在Page_Load中加入如下代碼
????????ReportViewer1.LocalReport.SetParameters(new?ReportParameter[]?{?rptParaA?});
32.保存并運(yùn)行 以查看效果
=========================================
接下來(lái),需要對(duì)所要呈現(xiàn)的報(bào)表資料 進(jìn)行定制
也就是通過(guò)設(shè)計(jì)DataSet
用符合需要的數(shù)據(jù)對(duì)報(bào)表進(jìn)行資料綁定和呈現(xiàn)
=========================================
33.設(shè)置ReportViewer1的Visible為false
34.在Default.aspx的設(shè)計(jì)界面 加入一個(gè)按鈕Button1
?? 將通過(guò)此按鈕的Click事件 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn) 以及DataSet的數(shù)據(jù)填充
?? 和對(duì)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",?"測(cè)試報(bào)表參數(shù)");
????????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"是與前臺(tái)html程序的
????????????<LocalReport?ReportPath="Report1.rdlc">
????????????????<DataSources>
????????????????????<rsweb:ReportDataSource?DataSourceId="ObjectDataSource1"?Name="DataSet1_Orders"?/>
????????????????</DataSources>
????????????</LocalReport>
????????</rsweb:ReportViewer>
?????? 中的<DataSources>的Name="DataSet1_Orders"是一致的
??? 可以通過(guò)對(duì)DataSet的填充時(shí)的sql語(yǔ)句等的定制 來(lái)得到所需要的數(shù)據(jù) 以便報(bào)表呈現(xiàn)
??? 需要注意的是由于ReportViewer1此時(shí)的關(guān)聯(lián)報(bào)表為Report1.rdlc,所以DataSet的Tables[0]中的結(jié)構(gòu)
??? 一定要包含Report1.rdlc所呈現(xiàn)的字段,所以,這里的Sql語(yǔ)句為select top 5 * from orders
36.保存 運(yùn)行 點(diǎn)擊Button1 以便 報(bào)表呈現(xiàn)
===============================================
如果 報(bào)表所要呈現(xiàn)的數(shù)據(jù) 來(lái)源于存儲(chǔ)過(guò)程
那么 在裝載DataSet時(shí) 使其數(shù)據(jù)來(lái)源于存儲(chǔ)過(guò)程即可
===============================================
37.右擊項(xiàng)目 添加新項(xiàng) ,選擇 報(bào)表,向項(xiàng)目中加入Report2.rdlc,
?? 設(shè)置其呈現(xiàn)的數(shù)據(jù)來(lái)源為存儲(chǔ)過(guò)程 Sales by Year
?? 同樣的在Report2.rdlc的設(shè)計(jì)界面 加入“表”報(bào)表項(xiàng)
?? 并將網(wǎng)站數(shù)據(jù)源下的DataSet1下的Sales by Year表中的字段
?? 拉入報(bào)表項(xiàng)“表”在詳細(xì)數(shù)據(jù)中 進(jìn)行顯示
38.如同Default.aspx 向項(xiàng)目中添加新的頁(yè)面Default2.aspx
?? 向Default2.aspx加入一個(gè)Button 和 ReportViewer1
?? 并設(shè)置ReportViewer1所要呈現(xiàn)的報(bào)表為Report2.rdlc
?? 設(shè)置ReportViewer1的Visible為false
?? 雙擊Button 進(jìn)行其Click事件的編寫
?? 設(shè)置Default2.aspx為項(xiàng)目的起始頁(yè)
39.在Default2.aspx.cs加入引用
?? using System.Data.SqlClient;
?? using Microsoft.Reporting.WebForms;
40.Button1_Click的事件代碼示例如下
????{
????????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.保存 運(yùn)行 點(diǎn)擊按鈕 報(bào)表效果查看
轉(zhuǎn)載于:https://www.cnblogs.com/freeliver54/archive/2006/11/27/573453.html
總結(jié)
以上是生活随笔為你收集整理的VS2005中ReportViewer 本地模式下报表呈现 入门示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序架构之争
- 下一篇: 发送自定义IP包(测试中:第二版)