ASP.NETserver控件使用之Reportviewer 报表
?
1.?????? Reportviewer 報表
?
?
1.1.?????? Reportviewer控件
注:本教程附2個事例:
l? 演練:在本地處理模式下將數據庫數據源與 ReportViewer Web server控件一起使用
?
l? 演練:在本地處理模式下將業務對象數據源與 ReportViewer Web server控件一起使用
假設您已經對ReportViewer控件基礎知識比較了解,能夠直接參閱事例。
?
1.1.1.???????????????? 簡單介紹
Microsoft Visual Studio 2005 包括報表設計功能和 ReportViewer 控件,使您能夠將功能完整的報表加入到自己定義應用程序。報表能夠包括表格格式數據、聚合數據和多維數據。提供 ReportViewer 控件的目的是能夠處理和顯示應用程序中的報表。控件有兩種版本號。ReportViewer Web server控件用于在 ASP.NET 項目中駐留報表。ReportViewer Windows 窗口控件用于在 Windows 應用程序項目中駐留報表。
?
這兩種版本號的控件都能夠配置為以本地處理模式或遠程處理模式執行。配置為何種處理模式將影響有關報表從設計到部署的全部方面。
?
l? “本地處理模式”是指 ReportViewer 控件在client應用程序中處理報表。全部報表都是使用應用程序提供的數據作為本地過程處理的。若要創建本地處理模式下使用的報表,須要使用 Visual Studio 中的報表項目模板。有關具體信息,請參閱將 ReportViewer 配置為進行本地處理。
?
l? “遠程處理模式”是指由 SQL Server 2005 Reporting Services 報表server處理報表。在遠程處理模式下,ReportViewer 控件用作查看器,顯示已經在 Reporting Services 報表server上公布的提前定義報表。從數據檢索到報表呈現的全部操作都是在報表server上處理的。若要使用遠程處理模式,則必須具有 SQL Server 2005 Reporting Services 的許可副本。有關具體信息,請參閱將 ReportViewer 配置為進行遠程處理。
?
若要在應用程序中使用 ReportViewer 控件,則必須了解怎樣將控件加入到項目表單或網頁中,怎樣配置控件來使用本地報表定義或server報表,怎樣更新數據源引用,以及怎樣在應用程序中測試和部署報表和控件。提供的演練有助于您學習這些關鍵技能。有關具體信息,請參閱演示樣例和演練。
1.1.2.???????????????? 將Reportviewer配置為進行本地處理
您能夠將 ReportViewer 控件配置為在本地處理報表,以使這些報表能夠使用該控件提供的內置處理功能。假設配置 ReportViewer 控件進行本地處理,則全部的報表處理都在承載應用程序的計算機上進行。報表使用的全部數據必須從client應用程序提供的數據中檢索。
報表設計期間,必須事先定義報表中使用的數據源。執行時,應用程序必須生成數據表或檢索報表中使用的數據。本地處理的報表能夠獲取數據表和業務對象中的數據。依據您使用的是 Web server控件還是 Windows 窗口控件,為本地處理的報表配置數據源的步驟有所不同。有關支持的數據源的具體信息,請參閱為 ReportViewer 報表創建數據源。
怎樣配置 ReportViewer 進行本地處理
若要配置 ReportViewer 進行本地處理,應選擇或創建要用于 ReportViewer 控件的client報表定義 (.rdlc) 文件:
?
1.???????? 將工具箱的“數據”部分中的 ReportViewer 控件加入到項目中的窗口或網頁。
?
2.???????? 在“ReportViewer 任務”智能標記面板中,單擊“設計新報表”來創建您要使用的 .rdlc 文件。另外,您也能夠選擇“選擇報表”來使用已是您項目的一部分的現有 .rdlc 文件。您僅僅能選擇一個報表。假設報表包括子報表或鉆取鏈接,則文件列表中將會顯示其它報表。
?
3.???????? 單擊“設計新報表”會將空的 .rdlc 文件加入到您的項目中,以圖形設計模式打開空報表,并提供菜單和設計圖面,以便您能夠創建新報表。若要創建新報表,您必須已經定義要使用的數據集。有關創建 .rdlc 文件的具體信息,請參閱創建client報表定義 (.rdlc) 文件。
?
4.???????? 生成或部署應用程序以驗證報表是否正確地顯示在應用程序中。
?
您能夠使用演練來了解怎樣配置和使用本地處理模式的 ReportViewer 控件。全部演練都包含本地處理報表的控件配置。有關具體信息,請參閱 演示樣例和演練。
何時使用本地處理
建議對于包含中小型號報表和數據集的應用程序使用本地處理模式。因為全部數據和報表的處理都是在client進行的,因此,假設您試圖處理大型或復雜的報表和查詢,性能可能會減少。假設您須要簡單的部署策略,當中應用程序的全部部分都在同一臺計算機上一起執行,也建議使用本地處理模式。
?
本地處理模式的功能不及遠程處理強大,它適用于不須要報表server的獨立應用程序。熟悉在遠程 SQL Server Reporting Services 報表server上執行的server報表的用戶應注意下面特別之處:
?
1.???????? client報表定義 (.rdlc) 中的報表參數不映射到查詢參數。client報表定義中沒有參數輸入區域,它接受隨后在查詢中使用的值。
?
2.???????? client報表定義不包括嵌入式查詢信息。您必須定義返回可供報表使用的數據的數據源。
?
3.???????? 通過 RSClientPrint ActiveX 控件執行的基于瀏覽器的打印不適用于 ReportViewer Web server控件中執行的client報表定義。打印控件是報表server功能集的一部分。
?
假設您受到這些特別之處的影響,您應該遷移到 Reporting Services 安裝或編寫提供您所需功能的應用程序代碼。
?
1.1.3.???????????????? 加入和配置Reportviewer控件
1.???????? 向項目中加入 Windows 窗口或網頁。
?
2.???????? 在圖形設計模式中,將工具箱中的 ReportViewer 控件拖至窗口或網頁。ReportViewer 控件位于工具箱的“數據”組中。控件包含“ReportViewer 任務”智能標記面板,這樣您能夠馬上選擇報表。
?
3.???????? 在“ReportViewer 任務”智能標記面板中,選擇任務以加入報表并配置控件。指定報表確定將控件配置為本地處理還是遠程處理。
?
l? 單擊“設計新報表”啟動報表設計器,并在您的應用程序中創建報表定義 (.rdlc) 文件。能夠在您的應用程序中創建在client本地處理的新報表。若要了解有關創建報表的具體信息,請參閱創建client報表定義 (.rdlc) 文件。
?
l? 使用“選擇報表”來選擇現有報表定義。您能夠選擇在項目中定義的本地報表定義 (.rdlc) 文件,也能夠選擇“server報表”來選擇在 SQL Server 2005 Reporting Services 報表server上公布的報表。
?
l? 選擇server報表將控件配置為遠程處理。若要選擇server報表,必須知道報表server URL 和報表的路徑。報表路徑必須以正斜杠 ( / ) 開頭。若要執行報表,必須對報表server具有權限才干訪問報表。假設不知道 URL 或報表路徑,請咨詢報表server管理員。有關server報表的具體信息,請參閱將 ReportViewer 配置為進行遠程處理。
?
l? 選擇現有的報表定義 (.rdlc) 文件將控件配置為本地處理。選擇報表時,必須選擇 .rdlc 文件;即使您的項目中包括 .rdl 文件,也不能指定 .rdl 文件。假設要使用 .rdl 文件,必須對其進行轉換。有關具體信息,請參閱創建client報表定義 (.rdlc) 文件和轉換 RDL 文件和 RDLC 文件。
?
l? 單擊“在父容器中停靠”展開 ReportViewer 控件的視圖圖面,以便它使用窗口或頁面中全部可用空間。此選項可用于 Windows 窗口控件。
?
l? 單擊“又一次綁定數據源”更新報表中使用的數據表和業務對象的數據源綁定。此選項在為控件選擇報表之后可用。假設改動報表數據源,或在圖形報表設計環境之外改動數據綁定報表項(比如,直接編輯 XML),則須要又一次綁定數據源。
?
4.???????? 選擇 ReportViewer 控件并打開“屬性”窗體。
?
5.???????? 對 ReportViewer 控件設置屬性以確定視圖區域的可見性和可用性。可使用參考文檔了解每種屬性。有關具體信息,請參閱 ReportViewer 屬性。若要了解 ReportViewer 工具欄,請參閱配置并使用 ReportViewer 工具欄。
?
6.???????? 生成或部署應用程序以在窗口或頁面中預覽報表。
?
1.1.4.???????????????? 創建client報表定義(.rdlc)文件
ReportViewer 控件支持本地處理模式,該模式同意用戶使用控件的內置處理功能執行client報表定義 (.rdlc) 文件。能夠easy地在應用程序項目中創建以本地處理模式執行的報表。創建這樣的報表的方法有兩種:
?
l? 能夠向應用程序項目中加入報表項。從“項目”菜單中選擇“加入新項”時,能夠選擇“報表”模板,從空白報表中生成報表布局。
?
l? 能夠在配置 ReportViewer 控件時,單擊“設計新報表”。即打開一個空白報表。
?
怎樣創建和預覽本地報表:
?
1.???????? 在 Microsoft Visual Studio 2005 中,打開應用程序項目或站點。
?
2.???????? 創建要使用的數據源。能夠使用項目中可用的數據集中定義的數據表或業務對象。有關具體信息,請參閱為 ReportViewer 報表創建數據源。
?
3.???????? 創建要在項目中使用的報表定義 (.rdlc) 文件。
?
4.???????? 通過將工具箱中的表、文本框、矩陣、列表或圖表加入到空白報表來定義報表布局。這些項稱為“數據區域”。數據區域綁定到數據源。具體來說,就是將數據區域中的每一個單元映射到數據源中的字段。有關具體信息,請參閱向 ReportViewer 報表加入數據區域。
?
5.???????? 通過加入樣式、格式設置、圖像、邊框、頁眉、頁腳、排序及其它報表功能來完畢報表。有關具體信息,請參閱定義報表布局。
?
6.???????? 選擇將包括控件的窗口或頁面。
?
7.???????? 在圖形設計模式中,將 ReportViewer 控件加入到網頁或窗口。ReportViewer 控件位于工具箱的“數據”部分中。有關具體信息,請參閱加入和配置 ReportViewer 控件。
?
8.???????? 在頁面或窗口中調整控件的大小和位置。
?
9.???????? 在“ReportViewer 任務”智能標記面板中,選擇創建的client報表定義 (.rdlc) 文件來將報表綁定到控件。有關打開智能標記面板的具體信息,請參閱使用“ReportViewer 任務”智能標記面板。
?
若要預覽報表,能夠生成或部署應用程序。僅僅能通過在 ReportViewer 控件中執行報表對其進行預覽。沒有僅僅是針對 .rdlc 文件的單獨預覽模式。請注意,您能夠隨時打開和編輯報表定義,然后生成或部署應用程序來檢查結果。
?
向項目加入新的報表項:
?
l? 向項目加入新的報表項時,會創建空白報表,并向項目加入 Report.rdlc 文件。報表定義以圖形設計模式打開。報表對象命名空間加入到項目中,可用的報表控件加入到工具箱中。
?
向報表加入報表項:
?
能夠輕松創建簡單的報表,方法是將報表項(比如,文本框、表、圖表和圖像)拖至報表設計圖面,并對那些項設置屬性。
?
l? 較復雜的報表可能包含用于自己定義報表輸出的參數和表達式。比如,若要獲得某種股票的市場分析報表,必須向報表中加入參數才干指定股票代碼。您能夠在您的應用程序中提供一個用戶界面,用于從用戶那里搜集參數值。參數能夠傳遞到查詢,以便更準確地指定數據選擇條件;也能夠用于篩選結果集,以便在報表中僅顯示部分結果集。能夠通過您的應用程序提前定義參數值并傳入;也能夠在運行報表之前由用戶指定參數值。
?
l? 表達式必須使用 Microsoft Visual Basic 編寫,用于聚合數據或運行條件格式設置。報表還能夠包括自己定義代碼。您能夠在報表中嵌入自己定義代碼,也能夠對作為應用程序一部分的自己定義程序集調用方法。與表達式不同,自己定義代碼可採用 Visual Basic 以外的其它語言編寫。
?
1.1.5.???????????????? 部署報表和Reportviewer控件
您能夠將報表和 ReportViewer 控件作為應用程序的一部分自由公布。依據控件類型以及報表是配置為本地處理還是遠程處理,部署要求會有非常大不同。在同一個應用程序中,既能夠部署本地處理的報表,也能夠部署遠程處理的報表。
?
又一次公布 ReportViewer 控件
?
可又一次公布的 ReportViewer 控件是一個名為 ReportViewer.exe 的自解壓縮文件,當中包含一個 .msi 文件以及其它文件。您能夠在下面位置找到 ReportViewer.exe 文件:C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/BootStrapper/Packages/Report Viewer/ReportViewer.exe。
?
您所使用控件的類型決定執行 ReportViewer.exe 的位置。
?
l? 假設使用 ASP.NET 應用程序部署控件,則必須在部署計算機上執行 ReportViewer.exe。
?
l? 假設使用 Windows 窗口應用程序部署控件,也必須在部署計算機上執行 ReportViewer.exe。您能夠使用引導程序來自己主動完畢此步驟:
?
1.???????? 打開項目屬性頁。
?
2.???????? 單擊“公布”,再單擊“必備組件”。
?
3.???????? 選中“Microsoft Visual Studio 2005 報表查看器”,然后單擊“確定”。
?
4.???????? 公布應用程序。
?
在安裝應用程序時,會在本地計算機上進行檢查,以確定是否已安裝 ReportViewer。假設未安裝,安裝程序將安裝它。
?
部署報表查看器 Web server控件的注意事項
?
在 Web 場中部署 ASP.NET 應用程序須要進行其它配置,以確保在整個場中維護視圖狀態。假設是在 Web 場環境中部署 ReportViewer Web server控件,則應在應用程序的 Web.config 文件里指定 machineKey 元素。有關具體信息,請參閱 ReportViewer 的 Web.config 設置。
?
必須注意,在 ReportViewer Web server控件中處理的報表對瀏覽器有要求。瀏覽器兼容性問題會影響某些種類的報表功能的可用性。有關具體信息,請參閱 ReportViewer Web server控件的瀏覽器支持。
?
分發報表
?
除非在執行時動態生成client報表定義 (.rdlc) 文件,否則本地處理的報表將以 .rdlc 文件存儲在文件系統上,而且必須與應用程序一起提供。這些文件能夠安裝在磁盤驅動器上,或者編譯到應用程序可執行文件里。
?
在遠程server上處理的報表將存儲在 Microsoft SQL Server 2005 Reporting Services 報表server上。應用程序中不包括不論什么報表文件,由于報表是遠程處理的,而且本地系統中不存在報表。若要部署在報表server上公布的報表,必須提供對報表server進行訪問的權限,并確保應用程序用戶有權查看該server上的報表。部署server報表須要了解報表server所使用的身份驗證擴展插件,以及提供內容訪問權限和操作權限的、基于角色的身份驗證模式。有關具體信息,請參閱server報表的部署注意事項。
?
1.1.6.???????????????? 為Reportviewer創建數據源
假設您將 ReportViewer 控件配置為以本地處理模式執行,則client應用程序必須提供報表中包括的全部數據。在將數據用于報表之前,必須對數據進行全然處理。若要向報表提供數據,請在項目中定義指向數據源的數據連接。支持的數據源包括:
?
l? 自己定義業務對象
?
l? ADO.NET DataTable
?
僅僅要報表能夠作為 ADO.NET DataTable 或業務對象的可枚舉集合來提供,該報表就能夠使用隨意源中的數據。
怎樣為 ReportViewer 報表加入數據源
?
建議使用下列方法來設置數據源,以便可以在client報表定義中使用該數據源。
?
l? 向應用程序項目中加入數據源并配置指向基礎數據的數據連接。請在基礎數據存儲區中選擇要使用的特定數據。要在報表中使用的數據必須存在于“數據源”窗體中。對于數據表,數據源將顯示查詢所返回的列名稱。對于業務對象的可枚舉集合,數據源將顯示由類對象所公開的簡單數據類型的公共屬性列表。
?
l? 若要創建數據表,請向項目中加入數據集,并使用 TableAdapter 向導配置該數據表。TableAdapter 向導提供了查詢生成器和數據預覽功能,使您能夠馬上確認查詢結果。
?
l? 若要創建業務對象,請使用“項目”菜單中的“加入新項”命令,并選擇類對象。提供用于公開簡單數據類型的公共屬性的實現方式,以便在設計時使用。提供用于返回這些屬性的可枚舉集合的方法,以便在執行時使用。
?
配置了數據源之后,可綁定數據就會在“數據源”窗體中顯示為一個層次結構。若要將數據綁定到報表,請將展開層次結構的節點拖到報表布局中的文本框或數據區域中。假設在定義了報表以后改動數據集,則必須更新報表和控件中的數據綁定。有關具體信息,請參閱更新和又一次綁定數據源引用。
?
您能夠在項目中包括隨意數量的數據源。若要查看報表實際使用的數據源列表,請選擇“報表”菜單中的“數據源”。若要在應用程序中預覽報表及其數據,則必須生成或部署該應用程序以驗證報表是否包括您期望的數據。有關配置控件和定義報表布局的具體信息,請參閱將 ReportViewer 配置為進行本地處理和創建client報表定義 (.rdlc) 文件。
?
若要馬上開始操作,請使用下列演練來了解怎樣向項目中加入每種數據源:
?
l? 演練:在本地處理模式下將數據庫數據源與 ReportViewer Web server控件一起使用
?
l? 演練:在本地處理模式下將業務對象數據源與 ReportViewer Web server控件一起使用
?
使用業務對象
業務對象是公開簡單數據類型的公共屬性的隨意應用程序對象。業務對象的演示樣例可包含基礎數據存儲區中的客戶對象集合、由應用程序創建的書籍標題對象數組或者從 RSS XML 源創建的通道對象列表。
?
若要成為可訪問的數據源,該集合必須支持 IEnumerable。可綁定數據在“數據源”窗體中顯示為一個層次結構視圖。對于業務對象,數據源將顯示由類對象所公開的簡單數據類型的公共屬性列表。您隨后能夠將它們綁定到報表定義中的數據區域和文本框中。
?
若要提供業務對象集合,能夠向項目中加入類或加入對類程序集的引用。
?
使用數據表
DataTable 是 ADO.NET DataSet 的一部分,通過從“項目”菜單中選擇“加入新項”能夠輕松地將其加入到項目中。若要配置數據連接,請啟動 TableAdapter 配置向導。從“數據”菜單中選擇“加入”,然后選擇“TableAdapter”。還能夠定義查詢來限制結果集。向導結束后,可通過“數據源”窗體來訪問 DataTable 中的列,以便您能夠將它們綁定到client報表定義中的數據區域和文本框中。
?
為 ReportViewer Web server控件定義數據源
數據源控件支持提取數據訪問層,以便網頁上的控件綁定到數據源,而該數據源隨后綁定到實際數據。這使您能夠有效地更改數據源,而無需將每一個控件又一次綁定到每一個數據塊。
?
當您設計網頁時,“工具箱數據”區域將列出幾個數據源控件,比如 SqlDataSource 和 XmlDataSource。某些數據源控件支持在網頁中使用頁內存,其它控件則使用共享數據。由于報表不使用頁內存,所以對于 ReportViewer Web server控件,最佳選擇是使用 ObjectDataSource 控件。此控件在內存中緩存對象(DataTable 或業務對象集合)與報表數據區域之間架起了一座橋梁。假設向網頁中加入了 ReportViewer 控件,將會自己主動加入和配置 ObjectDataSource 控件。
?
為了盡可能避免編寫額外代碼,ASP.NET 的網頁支持提供了額外的后臺處理來檢測提供可綁定業務對象的集合。假設向項目中加入的類將返回一個對象集合,且這些對象能夠被標識為業務對象,則該集合將會自己主動加入到“站點數據源”窗體中。
?
1.1.7.???????????????? 演練:在本地處理模式下將數據庫數據源與ReportViewer Webserver控件一起使用
本演練顯示了怎樣為 Microsoft Visual Studio 2005 ASP.NET 站點創建報表,以及怎樣向網頁加入 ReportViewer 控件,以便用戶能夠查看該報表。
?
?先決條件
本演練假定您能夠連接到 Oracle DataBase 實例,而且已建立EMPLOYEE_TABLE_2
表。您還必須對執行 Microsoft Internet Information Services (IIS) 5.0 版或更高版本號的server具有訪問權限,并具有創建 ASP.NET 網頁的權限。
EMPLOYEE_TABLE_2建表
create table EMPLOYEE_TABLE_2 ( EMPLOYEE_ID NUMBER, EMPLOYEE_NAME VARCHAR2(20), AGE NUMBER, DEPARTMENT_ID NUMBER, PROJECT_ID NUMBER, LOGIN_ID VARCHAR2(20), LOGIN_PASSWORD VARCHAR2(20) ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );
?
在您的計算機上運行下面步驟,以使用 Visual Studio 2008 模板創建含有配置為查看您所創建報表的 ReportViewer 控件的 ASP.NET 網頁。常規步驟例如以下:
?
1.???????? 創建新的站點。
?
2.???????? 通過加入 DataSet 來定義數據連接和 DataTable。
?
3.???????? 設計報表。
?
4.???????? 將 ReportViewer 控件加入到應用程序。
?
5.???????? 編譯和執行應用程序。
?
對于本演示樣例,在 Microsoft Visual C# 中創建應用程序。
?
?創建新的站點
1.???????? 在“文件”菜單中,指向“新建”,選擇“站點”。
?
?
2.???????? 在“新建站點”對話框中,選擇“ASP.NET 站點”。
?
?
3.???????? 在“語言”列表中,選擇 Visual C#,再單擊“確定”。
?
4.???????? 在“位置”框中,保留選定的默認 HTTP,然后輸入站點根文件夾的位置,使用“瀏覽”導航及創建新的文件夾(假設須要)。單擊“確定”。
?
5.???????? 站點項目將打開,并顯示 Default.aspx 網頁。
?
6.???????? 在“查看”菜單上,選擇“設計器”。
?
如今您就能夠改動站點的默認頁。
?
?通過加入數據集來定義數據連接和 DataTable
1.???????? ??在web.config中配置數據庫連接
1)???????? 什么是web.config
可擴展的基礎結構是 ? ASP.NET ? 配置系統的一大特色,該基礎結構使您能夠在最初部署 ? ASP.NET ? 應用程序時定義配置設置,以便能夠隨時加入或改動這些配置設置,同一時候對運作著的 ? Web ? 應用程序和server產生的影響也將被減至最小。
2)???????? 配置連接
在web.config的<configuration></configuration>下加上
<connectionStrings> <add name="ConnectionString" connectionString="Data Source=HCDB;Persist Security Info=True;User ID=huchen;Password=huchen;Unicode=True" providerName="System.Data.OracleClient"/> </connectionStrings>
當中Data Source是指tns中的Host String, User ID是oracle登陸username,Password是oracle登錄password。providerName是數據提供者。
?
2.???????? 在server資源管理器中,右鍵單擊站點項目(非解決方式節點),然后選擇“加入新項”。
?
3.???????? 在“加入新項”對話框中,單擊“數據集”。提示您是否應將項加入到 App_Code 目錄是,請單擊“是”。這將把新的 XSD 文件 DataSet.xsd 加入到項目,打開數據集設計器,并調用 TableAdapter 配置向導。
?
?
?
4.???????? 在“選擇您的數據連接”頁上,配置向導自己主動找到了Web.config中的連接,接受默認連接并點擊下一步。
?
5.???????? 在“選擇命令類型”頁上,選擇“使用 SQL 語句”。
?
6.???????? 在“輸入 SQL 語句”頁上,輸入下面SQL 查詢以從 EMPLOYEE_TABLE_2表中中檢索數據,再單擊“完畢”:
SELECT t.employee_id, t.employee_name, t.age FROM employee_table_2 t
?
還能夠單擊“查詢生成器”button,然后使用查詢生成器創建查詢,并使用“運行查詢”button對其進行檢查。
?
7.???????? 在“選擇要生成的方法”頁上,接受默認值“填充 DataTable”(“方法名稱”:Fill)和“返回 DataTable”(“方法名稱”:GetData)。單擊“下一步”。
?
8.???????? 在“向導結果”頁上,單擊“完畢”。
如今已完畢將 ADO.NET DataTable 配置為報表的數據源。
忽略下面錯誤,點擊確定。
?
9.???????? 在 Visual Studio 的“數據集設計器”頁上,應看到加入的 DataTable(默認名稱為 DataTable1),當中列出了從查詢定義得到的列。在“數據”菜單中,能夠選擇“預覽數據”來檢查查詢結果。
?
?設計報表
1.???????? 在“站點”菜單上,選擇“加入新項”。
?
1.???????? 在“加入新項”對話框中,選擇“報表”模板,輸入報表文件的名稱,再單擊“加入”。這將創建報表定義文件(默覺得 Report.rdlc),啟動報表設計器,并在左窗格中顯示“站點數據源”窗體。假設看不到“站點數據源”選項卡,請從“數據”菜單中選擇“顯示數據源”。
?
?
2.???????? 顯示工具箱,將“報表項”組中的“表”拖至報表設計圖面上。
表控件設計分三行,各自是表頭,具體信息,表尾。表頭是指報表的列字段,具體信息是綁定的列,既報表每列的數據,表尾是報表的每列的底部數據
?
?
?
3.???????? 在“站點數據源”窗體,展開 DataTable1 節點,直至看到查詢得到的列,然后將 Employee_Id 拖至表中第一列的中間行。中間行是具體信息行。請注意,指定具體信息行時,標題行會自己主動填充。
?
4.???????? 將“Employee_Name”字段拖至第二列的具體信息行,使其位于 Employee_Id 字段旁邊。
?
5.???????? 將 Age 字段拖至第三列的具體信息行,使其位于 Employee_Name 字段旁邊。
?
6.???????? (可選)單擊第一行左側的“表格表頭”button,并選擇“粗體”格式樣式。
?
7.???????? 在“文件”菜單上,選擇“所有保存”。
?
?向應用程序加入 ReportViewer 控件
1.???????? 在解決方式資源管理器中,右鍵單擊 Default.aspx,選擇“視圖設計器”。
?
2.???????? 將工具箱中的“數據”組中的 ReportViewer 控件拖至頁面。
?
1)???????? 假設“數據”節點下沒有ReportViewer圖標,則右擊“數據”節點,選擇“選擇項”。
?
2)???????? 在.NET Framework組件選項卡下選中命名空間為Microsoft.Reporting.WebForm下的ReportViewer,點擊確定。
?
3.???????? 通過單擊網頁上 ReportViewer 控件右上角中的三角形,打開“ReportViewer 任務”智能標記面板。在“選擇報表”框中,選擇 Report.rdlc 的全然限定文件名稱。
?
選擇報表后,將自己主動創建報表中使用的數據源的實例。并生成代碼以實例化每一個 DataTable(及其 DataSet 容器)以及與報表中使用的每一個數據源相相應的 ObjectDataSource 控件。此數據源控件自己主動進行配置。
?
????
?
注意
若要了解為什么 ASP.NET 使用 ObjectDataSource 控件而不使用 SqlDataSource 控件(即使基礎數據源可能是數據庫或某些其它強類型化的數據存儲),請參閱為 ReportViewer 報表創建數據源。
?編譯和執行應用程序
1.???????? 設置Default.aspx為起始頁,按 Ctrl+F5 在不調試情況下執行頁,或者按 F5 在執行頁時進行調試。
?
在編譯進程中包含對報表進行編譯,并將發現的全部錯誤(比如,報表中使用的表達式中的語法錯誤)加入到“任務列表”。
?
網頁顯示在瀏覽器中。ReportViewer 控件顯示報表。能夠使用工具欄瀏覽報表、縮放及導出到 Excel。
?
2.???????? 關閉瀏覽器。
1.1.8.???????????????? 演練:在本地處理模式下將業務對象數據源與ReportViewer Webserver控件一起使用
?
本演練說明了怎樣在 Microsoft Visual Studio 2005 ASP.NET 應用程序中的報表中使用對象數據源。有關業務對象和對象數據源的具體信息,請參閱Binding to Business Objects。
?
請運行下列步驟向 Visual Studio ASP.NET 站點項目加入報表。本演示樣例將用 Microsoft Visual C# 來創建應用程序。
?
?創建新的 ASP.NET 站點項目
1.???????? 在“文件”菜單中,指向“新建”,然后選擇“站點”。
?
2.???????? 在“新建站點”對話框中,從“語言”下拉列表中選擇 Visual C#,并選擇 ASP.NET 站點模板。
3.???????? 在“位置”中,選擇 HTTP 并鍵入站點的 URL。默認的 URL 為 http://localhost/WebSite。改為http://localhost/ReportViewerTest,單擊“確定”。
?
?創建要用作數據源的業務對象。
1.???????? 在解決方式資源管理器中選擇項目站點(以“http://”開頭)。右鍵單擊并選擇“加入新項”。
?
?
2.???????? 在“加入新項”對話框中,選擇“類”,鍵入 Employee.cs 作為文件名稱,然后單擊“加入”。
?
3.???????? 在詢問“是否要將該類放在‘App_Code’目錄中”的消息框中,選擇“是”。新文件將被加入到項目中并在 Visual Studio 中自己主動打開。
?
4.???????? 在Oracle數據庫中事例創建表
create table EMPLOYEE_TABLE_2 ( EMPLOYEE_ID NUMBER, EMPLOYEE_NAME VARCHAR2(20), AGE NUMBER, DEPARTMENT_ID NUMBER, PROJECT_ID NUMBER, LOGIN_ID VARCHAR2(20), LOGIN_PASSWORD VARCHAR2(20) ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );
5.???????? 在web.config中配置數據庫連接
3)???????? 什么是web.config
可擴展的基礎結構是 ? ASP.NET ? 配置系統的一大特色,該基礎結構使您能夠在最初部署 ? ASP.NET ? 應用程序時定義配置設置,以便能夠隨時加入或改動這些配置設置,同一時候對運作著的 ? Web ? 應用程序和server產生的影響也將被減至最小。
4)???????? 配置連接
在web.config的<configuration></configuration>下加上
<connectionStrings> <add name="ConnectionString" connectionString="Data Source=HCDB;Persist Security Info=True;User ID=huchen;Password=huchen;Unicode=True" providerName="System.Data.OracleClient"/> </connectionStrings>
當中Data Source是指tns中的Host String, User ID是oracle登陸username,Password是oracle登錄password。providerName是數據提供者。
6.???????? 加入對System.Data.OracleClient的引用
1)???????? 右擊站點項目,在彈出的選項卡下選擇加入引用
?
?
2)???????? 找到.net標簽頁下找到System.Data.OracleClient,單擊確定。
?
7.???????? 將 Employee.cs 的默認代碼替換為下面代碼:
using System; using System.Data; using System.Data.OracleClient; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; /// <summary> ///employee 的摘要說明 ///created by 胡琛 17-Feb-09 /// </summary> public class Employee { public Employee() { // //TODO: 在此處加入構造函數邏輯 // } public Employee(string employeeId, string employeeName, string employeeAge) { this.employeeId = employeeId; this.employeeName = employeeName; this.employeeAge = employeeAge; } private string employeeId; private string employeeName; private string employeeAge; public string EmployeeId { get { return employeeId; } set { employeeId = value; } } public string EmployeeName { get { return employeeName; } set { employeeName = value; } } public string EmployeeAge { get { return employeeAge; } set { employeeAge = value; } } public static List<Employee> GetEmployees() { OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); OracleCommand cmd = new OracleCommand(); cmd.CommandText = "select * from employee_table_2"; cmd.Connection = conn; conn.Open(); OracleDataReader reader = cmd.ExecuteReader(); List<Employee> list = new List<Employee>(); while (reader.Read()) { Employee employee = new Employee(reader.GetOracleNumber(0).ToString(), reader.GetOracleString(1).ToString(), reader.GetOracleNumber(2).ToString()); list.Add(employee); } reader.Close(); conn.Close(); return list; } }
?
8.???????? 從“項目”菜單中,選擇“生成解決方式”。這將為對象創建程序集,并在您向項目中加入報表后,使業務對象“Employee”顯示在“站點數據源”窗體中。
?
?向項目中加入報表
1.???????? 請確保在解決方式資源管理器中選中了項目站點或某個項目項。
?
2.???????? 右鍵單擊項目站點并選擇“加入新項”。
?
3.???????? 在“加入新項”對話框中,選擇“報表”。鍵入報表的名稱,然后單擊“加入”。該報表將被加入到項目中并在報表設計器中自己主動打開。報表的默認名稱為 Report.rdlc。
?
?檢查“站點數據源”窗體
2.???????? 單擊“Report.rdlc 設計”選項卡。在左側窗格中,單擊“站點數據源”選項卡。假設看不到“站點數據源”選項卡,請從“數據”菜單中選擇“顯示數據源”。
?
3.???????? 確認對象“Employee”及其3個公共屬性“id”,“名稱”和“年齡”都顯示在“站點數據源”窗體中的層次結構中。
?
?設計報表
1.???????? 假設報表是以設計模式打開的,請打開工具箱。從工具箱中將某個表控件拖到報表上。該表控件將在一個選項卡式設計窗體中打開。
?
2.???????? 表控件設計分三行,各自是表頭,具體信息,表尾。表頭是指報表的列字段,具體信息是綁定的列,既報表每列的數據,表尾是報表的每列的底部數據。
????
3.???????? 從“站點數據源”窗體,將“Employee”數據源中的“EmployeeId”字段拖到表的具體信息行的第一列中。具體信息行是中間行。請注意,當您指定具體信息行后,系統將自己主動填充標題行。
?
4.???????? 將“EmployeeName”字段拖到具體信息行的第二列中,使其顯示在“EmployeeId”字段的旁邊。第三列EmployeeAge同上。(可選操作)通過單擊左側的表格表頭圖標并應用粗體樣式來選擇標題行。
???
5.???????? 若要向報表中加入標題,請打開工具箱并將一個文本框拖到報表上。將該文本框置于表上方。鍵入 Employee 作為報表名稱。(可選操作)對文本應用字號和字體樣式來突出標題。
?
?向網頁中加入 ReportViewer 控件
1.???????? 通過在解決方式資源管理器中右鍵單擊 Default.aspx,選擇設計視圖中的默認網頁,然后選擇“視圖設計器”。
2.???????? 打開工具箱。在工具箱中,展開“數據”節點并將 ReportViewer 圖標拖到網頁上。
?
3)???????? 假設“數據”節點下沒有ReportViewer圖標,則右擊“數據”節點,選擇“選擇項”。
?
4)???????? 在.NET Framework組件選項卡下選中命名空間為Microsoft.Reporting.WebForm下的ReportViewer,點擊確定。
?
3.???????? 選擇 ReportViewer 控件,并通過單擊右上角的三角形打開智能標記面板。單擊“選擇報表”下拉列表并選擇剛才設計的報表。默認情況下,名稱為 c:/inetpub/wwwroot/ReportViewerTest/Report.rdlc。請注意,ObjectDataSource 控件直接顯示在 ReportViewer 控件以下,并自己主動設置為檢索 DataTable 的內容,就像通過數據表的 TableAdapter 組件所配置的那樣。
?
?
????
?執行應用程序
l? 把Default.aspx設為起始頁,按 F5 以邊執行邊調試,或按 CTRL + F5 以執行而不調試,然后查看報表。
?
?
?
轉載于:https://www.cnblogs.com/mengfanrong/p/3794047.html
總結
以上是生活随笔為你收集整理的ASP.NETserver控件使用之Reportviewer 报表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国内外著名安全站点
- 下一篇: r语言 线性回归 相关系数_基于R语言的