ASP.NETserver控件使用之Reportviewer 报表
?
1.?????? Reportviewer 報(bào)表
?
?
1.1.?????? Reportviewer控件
注:本教程附2個(gè)事例:
l? 演練:在本地處理模式下將數(shù)據(jù)庫數(shù)據(jù)源與 ReportViewer Web server控件一起使用
?
l? 演練:在本地處理模式下將業(yè)務(wù)對(duì)象數(shù)據(jù)源與 ReportViewer Web server控件一起使用
假設(shè)您已經(jīng)對(duì)ReportViewer控件基礎(chǔ)知識(shí)比較了解,能夠直接參閱事例。
?
1.1.1.???????????????? 簡(jiǎn)單介紹
Microsoft Visual Studio 2005 包括報(bào)表設(shè)計(jì)功能和 ReportViewer 控件,使您能夠?qū)⒐δ芡暾膱?bào)表加入到自己定義應(yīng)用程序。報(bào)表能夠包括表格格式數(shù)據(jù)、聚合數(shù)據(jù)和多維數(shù)據(jù)。提供 ReportViewer 控件的目的是能夠處理和顯示應(yīng)用程序中的報(bào)表??丶袃煞N版本號(hào)。ReportViewer Web server控件用于在 ASP.NET 項(xiàng)目中駐留報(bào)表。ReportViewer Windows 窗口控件用于在 Windows 應(yīng)用程序項(xiàng)目中駐留報(bào)表。
?
這兩種版本號(hào)的控件都能夠配置為以本地處理模式或遠(yuǎn)程處理模式執(zhí)行。配置為何種處理模式將影響有關(guān)報(bào)表從設(shè)計(jì)到部署的全部方面。
?
l? “本地處理模式”是指 ReportViewer 控件在client應(yīng)用程序中處理報(bào)表。全部報(bào)表都是使用應(yīng)用程序提供的數(shù)據(jù)作為本地過程處理的。若要?jiǎng)?chuàng)建本地處理模式下使用的報(bào)表,須要使用 Visual Studio 中的報(bào)表項(xiàng)目模板。有關(guān)具體信息,請(qǐng)參閱將 ReportViewer 配置為進(jìn)行本地處理。
?
l? “遠(yuǎn)程處理模式”是指由 SQL Server 2005 Reporting Services 報(bào)表server處理報(bào)表。在遠(yuǎn)程處理模式下,ReportViewer 控件用作查看器,顯示已經(jīng)在 Reporting Services 報(bào)表server上公布的提前定義報(bào)表。從數(shù)據(jù)檢索到報(bào)表呈現(xiàn)的全部操作都是在報(bào)表server上處理的。若要使用遠(yuǎn)程處理模式,則必須具有 SQL Server 2005 Reporting Services 的許可副本。有關(guān)具體信息,請(qǐng)參閱將 ReportViewer 配置為進(jìn)行遠(yuǎn)程處理。
?
若要在應(yīng)用程序中使用 ReportViewer 控件,則必須了解怎樣將控件加入到項(xiàng)目表單或網(wǎng)頁中,怎樣配置控件來使用本地報(bào)表定義或server報(bào)表,怎樣更新數(shù)據(jù)源引用,以及怎樣在應(yīng)用程序中測(cè)試和部署報(bào)表和控件。提供的演練有助于您學(xué)習(xí)這些關(guān)鍵技能。有關(guān)具體信息,請(qǐng)參閱演示樣例和演練。
1.1.2.???????????????? 將Reportviewer配置為進(jìn)行本地處理
您能夠?qū)?/span> ReportViewer 控件配置為在本地處理報(bào)表,以使這些報(bào)表能夠使用該控件提供的內(nèi)置處理功能。假設(shè)配置 ReportViewer 控件進(jìn)行本地處理,則全部的報(bào)表處理都在承載應(yīng)用程序的計(jì)算機(jī)上進(jìn)行。報(bào)表使用的全部數(shù)據(jù)必須從client應(yīng)用程序提供的數(shù)據(jù)中檢索。
報(bào)表設(shè)計(jì)期間,必須事先定義報(bào)表中使用的數(shù)據(jù)源。執(zhí)行時(shí),應(yīng)用程序必須生成數(shù)據(jù)表或檢索報(bào)表中使用的數(shù)據(jù)。本地處理的報(bào)表能夠獲取數(shù)據(jù)表和業(yè)務(wù)對(duì)象中的數(shù)據(jù)。依據(jù)您使用的是 Web server控件還是 Windows 窗口控件,為本地處理的報(bào)表配置數(shù)據(jù)源的步驟有所不同。有關(guān)支持的數(shù)據(jù)源的具體信息,請(qǐng)參閱為 ReportViewer 報(bào)表創(chuàng)建數(shù)據(jù)源。
怎樣配置 ReportViewer 進(jìn)行本地處理
若要配置 ReportViewer 進(jìn)行本地處理,應(yīng)選擇或創(chuàng)建要用于 ReportViewer 控件的client報(bào)表定義 (.rdlc) 文件:
?
1.???????? 將工具箱的“數(shù)據(jù)”部分中的 ReportViewer 控件加入到項(xiàng)目中的窗口或網(wǎng)頁。
?
2.???????? 在“ReportViewer 任務(wù)”智能標(biāo)記面板中,單擊“設(shè)計(jì)新報(bào)表”來創(chuàng)建您要使用的 .rdlc 文件。另外,您也能夠選擇“選擇報(bào)表”來使用已是您項(xiàng)目的一部分的現(xiàn)有 .rdlc 文件。您僅僅能選擇一個(gè)報(bào)表。假設(shè)報(bào)表包括子報(bào)表或鉆取鏈接,則文件列表中將會(huì)顯示其它報(bào)表。
?
3.???????? 單擊“設(shè)計(jì)新報(bào)表”會(huì)將空的 .rdlc 文件加入到您的項(xiàng)目中,以圖形設(shè)計(jì)模式打開空?qǐng)?bào)表,并提供菜單和設(shè)計(jì)圖面,以便您能夠創(chuàng)建新報(bào)表。若要?jiǎng)?chuàng)建新報(bào)表,您必須已經(jīng)定義要使用的數(shù)據(jù)集。有關(guān)創(chuàng)建 .rdlc 文件的具體信息,請(qǐng)參閱創(chuàng)建client報(bào)表定義 (.rdlc) 文件。
?
4.???????? 生成或部署應(yīng)用程序以驗(yàn)證報(bào)表是否正確地顯示在應(yīng)用程序中。
?
您能夠使用演練來了解怎樣配置和使用本地處理模式的 ReportViewer 控件。全部演練都包含本地處理報(bào)表的控件配置。有關(guān)具體信息,請(qǐng)參閱 演示樣例和演練。
何時(shí)使用本地處理
建議對(duì)于包含中小型號(hào)報(bào)表和數(shù)據(jù)集的應(yīng)用程序使用本地處理模式。因?yàn)槿繑?shù)據(jù)和報(bào)表的處理都是在client進(jìn)行的,因此,假設(shè)您試圖處理大型或復(fù)雜的報(bào)表和查詢,性能可能會(huì)減少。假設(shè)您須要簡(jiǎn)單的部署策略,當(dāng)中應(yīng)用程序的全部部分都在同一臺(tái)計(jì)算機(jī)上一起執(zhí)行,也建議使用本地處理模式。
?
本地處理模式的功能不及遠(yuǎn)程處理強(qiáng)大,它適用于不須要報(bào)表server的獨(dú)立應(yīng)用程序。熟悉在遠(yuǎn)程 SQL Server Reporting Services 報(bào)表server上執(zhí)行的server報(bào)表的用戶應(yīng)注意下面特別之處:
?
1.???????? client報(bào)表定義 (.rdlc) 中的報(bào)表參數(shù)不映射到查詢參數(shù)。client報(bào)表定義中沒有參數(shù)輸入?yún)^(qū)域,它接受隨后在查詢中使用的值。
?
2.???????? client報(bào)表定義不包括嵌入式查詢信息。您必須定義返回可供報(bào)表使用的數(shù)據(jù)的數(shù)據(jù)源。
?
3.???????? 通過 RSClientPrint ActiveX 控件執(zhí)行的基于瀏覽器的打印不適用于 ReportViewer Web server控件中執(zhí)行的client報(bào)表定義。打印控件是報(bào)表server功能集的一部分。
?
假設(shè)您受到這些特別之處的影響,您應(yīng)該遷移到 Reporting Services 安裝或編寫提供您所需功能的應(yīng)用程序代碼。
?
1.1.3.???????????????? 加入和配置Reportviewer控件
1.???????? 向項(xiàng)目中加入 Windows 窗口或網(wǎng)頁。
?
2.???????? 在圖形設(shè)計(jì)模式中,將工具箱中的 ReportViewer 控件拖至窗口或網(wǎng)頁。ReportViewer 控件位于工具箱的“數(shù)據(jù)”組中??丶?/span>ReportViewer 任務(wù)”智能標(biāo)記面板,這樣您能夠馬上選擇報(bào)表。
?
3.???????? 在“ReportViewer 任務(wù)”智能標(biāo)記面板中,選擇任務(wù)以加入報(bào)表并配置控件。指定報(bào)表確定將控件配置為本地處理還是遠(yuǎn)程處理。
?
l? 單擊“設(shè)計(jì)新報(bào)表”啟動(dòng)報(bào)表設(shè)計(jì)器,并在您的應(yīng)用程序中創(chuàng)建報(bào)表定義 (.rdlc) 文件。能夠在您的應(yīng)用程序中創(chuàng)建在client本地處理的新報(bào)表。若要了解有關(guān)創(chuàng)建報(bào)表的具體信息,請(qǐng)參閱創(chuàng)建client報(bào)表定義 (.rdlc) 文件。
?
l? 使用“選擇報(bào)表”來選擇現(xiàn)有報(bào)表定義。您能夠選擇在項(xiàng)目中定義的本地報(bào)表定義 (.rdlc) 文件,也能夠選擇“server報(bào)表”來選擇在 SQL Server 2005 Reporting Services 報(bào)表server上公布的報(bào)表。
?
l? 選擇server報(bào)表將控件配置為遠(yuǎn)程處理。若要選擇server報(bào)表,必須知道報(bào)表server URL 和報(bào)表的路徑。報(bào)表路徑必須以正斜杠 ( / ) 開頭。若要執(zhí)行報(bào)表,必須對(duì)報(bào)表server具有權(quán)限才干訪問報(bào)表。假設(shè)不知道 URL 或報(bào)表路徑,請(qǐng)咨詢報(bào)表server管理員。有關(guān)server報(bào)表的具體信息,請(qǐng)參閱將 ReportViewer 配置為進(jìn)行遠(yuǎn)程處理。
?
l? 選擇現(xiàn)有的報(bào)表定義 (.rdlc) 文件將控件配置為本地處理。選擇報(bào)表時(shí),必須選擇 .rdlc 文件;即使您的項(xiàng)目中包括 .rdl 文件,也不能指定 .rdl 文件。假設(shè)要使用 .rdl 文件,必須對(duì)其進(jìn)行轉(zhuǎn)換。有關(guān)具體信息,請(qǐng)參閱創(chuàng)建client報(bào)表定義 (.rdlc) 文件和轉(zhuǎn)換 RDL 文件和 RDLC 文件。
?
l? 單擊“在父容器中停靠”展開 ReportViewer 控件的視圖圖面,以便它使用窗口或頁面中全部可用空間。此選項(xiàng)可用于 Windows 窗口控件。
?
l? 單擊“又一次綁定數(shù)據(jù)源”更新報(bào)表中使用的數(shù)據(jù)表和業(yè)務(wù)對(duì)象的數(shù)據(jù)源綁定。此選項(xiàng)在為控件選擇報(bào)表之后可用。假設(shè)改動(dòng)報(bào)表數(shù)據(jù)源,或在圖形報(bào)表設(shè)計(jì)環(huán)境之外改動(dòng)數(shù)據(jù)綁定報(bào)表項(xiàng)(比如,直接編輯 XML),則須要又一次綁定數(shù)據(jù)源。
?
4.???????? 選擇 ReportViewer 控件并打開“屬性”窗體。
?
5.???????? 對(duì) ReportViewer 控件設(shè)置屬性以確定視圖區(qū)域的可見性和可用性??墒褂脜⒖嘉臋n了解每種屬性。有關(guān)具體信息,請(qǐng)參閱 ReportViewer 屬性。若要了解 ReportViewer 工具欄,請(qǐng)參閱配置并使用 ReportViewer 工具欄。
?
6.???????? 生成或部署應(yīng)用程序以在窗口或頁面中預(yù)覽報(bào)表。
?
1.1.4.???????????????? 創(chuàng)建client報(bào)表定義(.rdlc)文件
ReportViewer 控件支持本地處理模式,該模式同意用戶使用控件的內(nèi)置處理功能執(zhí)行client報(bào)表定義 (.rdlc) 文件。能夠easy地在應(yīng)用程序項(xiàng)目中創(chuàng)建以本地處理模式執(zhí)行的報(bào)表。創(chuàng)建這樣的報(bào)表的方法有兩種:
?
l? 能夠向應(yīng)用程序項(xiàng)目中加入報(bào)表項(xiàng)。從“項(xiàng)目”菜單中選擇“加入新項(xiàng)”時(shí),能夠選擇“報(bào)表”模板,從空白報(bào)表中生成報(bào)表布局。
?
l? 能夠在配置 ReportViewer 控件時(shí),單擊“設(shè)計(jì)新報(bào)表”。即打開一個(gè)空白報(bào)表。
?
怎樣創(chuàng)建和預(yù)覽本地報(bào)表:
?
1.???????? 在 Microsoft Visual Studio 2005 中,打開應(yīng)用程序項(xiàng)目或站點(diǎn)。
?
2.???????? 創(chuàng)建要使用的數(shù)據(jù)源。能夠使用項(xiàng)目中可用的數(shù)據(jù)集中定義的數(shù)據(jù)表或業(yè)務(wù)對(duì)象。有關(guān)具體信息,請(qǐng)參閱為 ReportViewer 報(bào)表創(chuàng)建數(shù)據(jù)源。
?
3.???????? 創(chuàng)建要在項(xiàng)目中使用的報(bào)表定義 (.rdlc) 文件。
?
4.???????? 通過將工具箱中的表、文本框、矩陣、列表或圖表加入到空白報(bào)表來定義報(bào)表布局。這些項(xiàng)稱為“數(shù)據(jù)區(qū)域”。數(shù)據(jù)區(qū)域綁定到數(shù)據(jù)源。具體來說,就是將數(shù)據(jù)區(qū)域中的每一個(gè)單元映射到數(shù)據(jù)源中的字段。有關(guān)具體信息,請(qǐng)參閱向 ReportViewer 報(bào)表加入數(shù)據(jù)區(qū)域。
?
5.???????? 通過加入樣式、格式設(shè)置、圖像、邊框、頁眉、頁腳、排序及其它報(bào)表功能來完畢報(bào)表。有關(guān)具體信息,請(qǐng)參閱定義報(bào)表布局。
?
6.???????? 選擇將包括控件的窗口或頁面。
?
7.???????? 在圖形設(shè)計(jì)模式中,將 ReportViewer 控件加入到網(wǎng)頁或窗口。ReportViewer 控件位于工具箱的“數(shù)據(jù)”部分中。有關(guān)具體信息,請(qǐng)參閱加入和配置 ReportViewer 控件。
?
8.???????? 在頁面或窗口中調(diào)整控件的大小和位置。
?
9.???????? 在“ReportViewer 任務(wù)”智能標(biāo)記面板中,選擇創(chuàng)建的client報(bào)表定義 (.rdlc) 文件來將報(bào)表綁定到控件。有關(guān)打開智能標(biāo)記面板的具體信息,請(qǐng)參閱使用“ReportViewer 任務(wù)”智能標(biāo)記面板。
?
若要預(yù)覽報(bào)表,能夠生成或部署應(yīng)用程序。僅僅能通過在 ReportViewer 控件中執(zhí)行報(bào)表對(duì)其進(jìn)行預(yù)覽。沒有僅僅是針對(duì) .rdlc 文件的單獨(dú)預(yù)覽模式。請(qǐng)注意,您能夠隨時(shí)打開和編輯報(bào)表定義,然后生成或部署應(yīng)用程序來檢查結(jié)果。
?
向項(xiàng)目加入新的報(bào)表項(xiàng):
?
l? 向項(xiàng)目加入新的報(bào)表項(xiàng)時(shí),會(huì)創(chuàng)建空白報(bào)表,并向項(xiàng)目加入 Report.rdlc 文件。報(bào)表定義以圖形設(shè)計(jì)模式打開。報(bào)表對(duì)象命名空間加入到項(xiàng)目中,可用的報(bào)表控件加入到工具箱中。
?
向報(bào)表加入報(bào)表項(xiàng):
?
能夠輕松創(chuàng)建簡(jiǎn)單的報(bào)表,方法是將報(bào)表項(xiàng)(比如,文本框、表、圖表和圖像)拖至報(bào)表設(shè)計(jì)圖面,并對(duì)那些項(xiàng)設(shè)置屬性。
?
l? 較復(fù)雜的報(bào)表可能包含用于自己定義報(bào)表輸出的參數(shù)和表達(dá)式。比如,若要獲得某種股票的市場(chǎng)分析報(bào)表,必須向報(bào)表中加入?yún)?shù)才干指定股票代碼。您能夠在您的應(yīng)用程序中提供一個(gè)用戶界面,用于從用戶那里搜集參數(shù)值。參數(shù)能夠傳遞到查詢,以便更準(zhǔn)確地指定數(shù)據(jù)選擇條件;也能夠用于篩選結(jié)果集,以便在報(bào)表中僅顯示部分結(jié)果集。能夠通過您的應(yīng)用程序提前定義參數(shù)值并傳入;也能夠在運(yùn)行報(bào)表之前由用戶指定參數(shù)值。
?
l? 表達(dá)式必須使用 Microsoft Visual Basic 編寫,用于聚合數(shù)據(jù)或運(yùn)行條件格式設(shè)置。報(bào)表還能夠包括自己定義代碼。您能夠在報(bào)表中嵌入自己定義代碼,也能夠?qū)ψ鳛閼?yīng)用程序一部分的自己定義程序集調(diào)用方法。與表達(dá)式不同,自己定義代碼可採用 Visual Basic 以外的其它語言編寫。
?
1.1.5.???????????????? 部署報(bào)表和Reportviewer控件
您能夠?qū)?bào)表和 ReportViewer 控件作為應(yīng)用程序的一部分自由公布。依據(jù)控件類型以及報(bào)表是配置為本地處理還是遠(yuǎn)程處理,部署要求會(huì)有非常大不同。在同一個(gè)應(yīng)用程序中,既能夠部署本地處理的報(bào)表,也能夠部署遠(yuǎn)程處理的報(bào)表。
?
又一次公布 ReportViewer 控件
?
可又一次公布的 ReportViewer 控件是一個(gè)名為 ReportViewer.exe 的自解壓縮文件,當(dāng)中包含一個(gè) .msi 文件以及其它文件。您能夠在下面位置找到 ReportViewer.exe 文件:C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/BootStrapper/Packages/Report Viewer/ReportViewer.exe。
?
您所使用控件的類型決定執(zhí)行 ReportViewer.exe 的位置。
?
l? 假設(shè)使用 ASP.NET 應(yīng)用程序部署控件,則必須在部署計(jì)算機(jī)上執(zhí)行 ReportViewer.exe。
?
l? 假設(shè)使用 Windows 窗口應(yīng)用程序部署控件,也必須在部署計(jì)算機(jī)上執(zhí)行 ReportViewer.exe。您能夠使用引導(dǎo)程序來自己主動(dòng)完畢此步驟:
?
1.???????? 打開項(xiàng)目屬性頁。
?
2.???????? 單擊“公布”,再單擊“必備組件”。
?
3.???????? 選中“Microsoft Visual Studio 2005 報(bào)表查看器”,然后單擊“確定”。
?
4.???????? 公布應(yīng)用程序。
?
在安裝應(yīng)用程序時(shí),會(huì)在本地計(jì)算機(jī)上進(jìn)行檢查,以確定是否已安裝 ReportViewer。假設(shè)未安裝,安裝程序?qū)惭b它。
?
部署報(bào)表查看器 Web server控件的注意事項(xiàng)
?
在 Web 場(chǎng)中部署 ASP.NET 應(yīng)用程序須要進(jìn)行其它配置,以確保在整個(gè)場(chǎng)中維護(hù)視圖狀態(tài)。假設(shè)是在 Web 場(chǎng)環(huán)境中部署 ReportViewer Web server控件,則應(yīng)在應(yīng)用程序的 Web.config 文件里指定 machineKey 元素。有關(guān)具體信息,請(qǐng)參閱 ReportViewer 的 Web.config 設(shè)置。
?
必須注意,在 ReportViewer Web server控件中處理的報(bào)表對(duì)瀏覽器有要求。瀏覽器兼容性問題會(huì)影響某些種類的報(bào)表功能的可用性。有關(guān)具體信息,請(qǐng)參閱 ReportViewer Web server控件的瀏覽器支持。
?
分發(fā)報(bào)表
?
除非在執(zhí)行時(shí)動(dòng)態(tài)生成client報(bào)表定義 (.rdlc) 文件,否則本地處理的報(bào)表將以 .rdlc 文件存儲(chǔ)在文件系統(tǒng)上,而且必須與應(yīng)用程序一起提供。這些文件能夠安裝在磁盤驅(qū)動(dòng)器上,或者編譯到應(yīng)用程序可執(zhí)行文件里。
?
在遠(yuǎn)程server上處理的報(bào)表將存儲(chǔ)在 Microsoft SQL Server 2005 Reporting Services 報(bào)表server上。應(yīng)用程序中不包括不論什么報(bào)表文件,由于報(bào)表是遠(yuǎn)程處理的,而且本地系統(tǒng)中不存在報(bào)表。若要部署在報(bào)表server上公布的報(bào)表,必須提供對(duì)報(bào)表server進(jìn)行訪問的權(quán)限,并確保應(yīng)用程序用戶有權(quán)查看該server上的報(bào)表。部署server報(bào)表須要了解報(bào)表server所使用的身份驗(yàn)證擴(kuò)展插件,以及提供內(nèi)容訪問權(quán)限和操作權(quán)限的、基于角色的身份驗(yàn)證模式。有關(guān)具體信息,請(qǐng)參閱server報(bào)表的部署注意事項(xiàng)。
?
1.1.6.???????????????? 為Reportviewer創(chuàng)建數(shù)據(jù)源
假設(shè)您將 ReportViewer 控件配置為以本地處理模式執(zhí)行,則client應(yīng)用程序必須提供報(bào)表中包括的全部數(shù)據(jù)。在將數(shù)據(jù)用于報(bào)表之前,必須對(duì)數(shù)據(jù)進(jìn)行全然處理。若要向報(bào)表提供數(shù)據(jù),請(qǐng)?jiān)陧?xiàng)目中定義指向數(shù)據(jù)源的數(shù)據(jù)連接。支持的數(shù)據(jù)源包括:
?
l? 自己定義業(yè)務(wù)對(duì)象
?
l? ADO.NET DataTable
?
僅僅要報(bào)表能夠作為 ADO.NET DataTable 或業(yè)務(wù)對(duì)象的可枚舉集合來提供,該報(bào)表就能夠使用隨意源中的數(shù)據(jù)。
怎樣為 ReportViewer 報(bào)表加入數(shù)據(jù)源
?
建議使用下列方法來設(shè)置數(shù)據(jù)源,以便可以在client報(bào)表定義中使用該數(shù)據(jù)源。
?
l? 向應(yīng)用程序項(xiàng)目中加入數(shù)據(jù)源并配置指向基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)連接。請(qǐng)?jiān)诨A(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)中選擇要使用的特定數(shù)據(jù)。要在報(bào)表中使用的數(shù)據(jù)必須存在于“數(shù)據(jù)源”窗體中。對(duì)于數(shù)據(jù)表,數(shù)據(jù)源將顯示查詢所返回的列名稱。對(duì)于業(yè)務(wù)對(duì)象的可枚舉集合,數(shù)據(jù)源將顯示由類對(duì)象所公開的簡(jiǎn)單數(shù)據(jù)類型的公共屬性列表。
?
l? 若要?jiǎng)?chuàng)建數(shù)據(jù)表,請(qǐng)向項(xiàng)目中加入數(shù)據(jù)集,并使用 TableAdapter 向?qū)渲迷摂?shù)據(jù)表。TableAdapter 向?qū)峁┝瞬樵兩善骱蛿?shù)據(jù)預(yù)覽功能,使您能夠馬上確認(rèn)查詢結(jié)果。
?
l? 若要?jiǎng)?chuàng)建業(yè)務(wù)對(duì)象,請(qǐng)使用“項(xiàng)目”菜單中的“加入新項(xiàng)”命令,并選擇類對(duì)象。提供用于公開簡(jiǎn)單數(shù)據(jù)類型的公共屬性的實(shí)現(xiàn)方式,以便在設(shè)計(jì)時(shí)使用。提供用于返回這些屬性的可枚舉集合的方法,以便在執(zhí)行時(shí)使用。
?
配置了數(shù)據(jù)源之后,可綁定數(shù)據(jù)就會(huì)在“數(shù)據(jù)源”窗體中顯示為一個(gè)層次結(jié)構(gòu)。若要將數(shù)據(jù)綁定到報(bào)表,請(qǐng)將展開層次結(jié)構(gòu)的節(jié)點(diǎn)拖到報(bào)表布局中的文本框或數(shù)據(jù)區(qū)域中。假設(shè)在定義了報(bào)表以后改動(dòng)數(shù)據(jù)集,則必須更新報(bào)表和控件中的數(shù)據(jù)綁定。有關(guān)具體信息,請(qǐng)參閱更新和又一次綁定數(shù)據(jù)源引用。
?
您能夠在項(xiàng)目中包括隨意數(shù)量的數(shù)據(jù)源。若要查看報(bào)表實(shí)際使用的數(shù)據(jù)源列表,請(qǐng)選擇“報(bào)表”菜單中的“數(shù)據(jù)源”。若要在應(yīng)用程序中預(yù)覽報(bào)表及其數(shù)據(jù),則必須生成或部署該應(yīng)用程序以驗(yàn)證報(bào)表是否包括您期望的數(shù)據(jù)。有關(guān)配置控件和定義報(bào)表布局的具體信息,請(qǐng)參閱將 ReportViewer 配置為進(jìn)行本地處理和創(chuàng)建client報(bào)表定義 (.rdlc) 文件。
?
若要馬上開始操作,請(qǐng)使用下列演練來了解怎樣向項(xiàng)目中加入每種數(shù)據(jù)源:
?
l? 演練:在本地處理模式下將數(shù)據(jù)庫數(shù)據(jù)源與 ReportViewer Web server控件一起使用
?
l? 演練:在本地處理模式下將業(yè)務(wù)對(duì)象數(shù)據(jù)源與 ReportViewer Web server控件一起使用
?
使用業(yè)務(wù)對(duì)象
業(yè)務(wù)對(duì)象是公開簡(jiǎn)單數(shù)據(jù)類型的公共屬性的隨意應(yīng)用程序?qū)ο蟆I(yè)務(wù)對(duì)象的演示樣例可包含基礎(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)中的客戶對(duì)象集合、由應(yīng)用程序創(chuàng)建的書籍標(biāo)題對(duì)象數(shù)組或者從 RSS XML 源創(chuàng)建的通道對(duì)象列表。
?
若要成為可訪問的數(shù)據(jù)源,該集合必須支持 IEnumerable。可綁定數(shù)據(jù)在“數(shù)據(jù)源”窗體中顯示為一個(gè)層次結(jié)構(gòu)視圖。對(duì)于業(yè)務(wù)對(duì)象,數(shù)據(jù)源將顯示由類對(duì)象所公開的簡(jiǎn)單數(shù)據(jù)類型的公共屬性列表。您隨后能夠?qū)⑺鼈兘壎ǖ綀?bào)表定義中的數(shù)據(jù)區(qū)域和文本框中。
?
若要提供業(yè)務(wù)對(duì)象集合,能夠向項(xiàng)目中加入類或加入對(duì)類程序集的引用。
?
使用數(shù)據(jù)表
DataTable 是 ADO.NET DataSet 的一部分,通過從“項(xiàng)目”菜單中選擇“加入新項(xiàng)”能夠輕松地將其加入到項(xiàng)目中。若要配置數(shù)據(jù)連接,請(qǐng)啟動(dòng) TableAdapter 配置向?qū)А摹皵?shù)據(jù)”菜單中選擇“加入”,然后選擇“TableAdapter”。還能夠定義查詢來限制結(jié)果集。向?qū)ЫY(jié)束后,可通過“數(shù)據(jù)源”窗體來訪問 DataTable 中的列,以便您能夠?qū)⑺鼈兘壎ǖ絚lient報(bào)表定義中的數(shù)據(jù)區(qū)域和文本框中。
?
為 ReportViewer Web server控件定義數(shù)據(jù)源
數(shù)據(jù)源控件支持提取數(shù)據(jù)訪問層,以便網(wǎng)頁上的控件綁定到數(shù)據(jù)源,而該數(shù)據(jù)源隨后綁定到實(shí)際數(shù)據(jù)。這使您能夠有效地更改數(shù)據(jù)源,而無需將每一個(gè)控件又一次綁定到每一個(gè)數(shù)據(jù)塊。
?
當(dāng)您設(shè)計(jì)網(wǎng)頁時(shí),“工具箱數(shù)據(jù)”區(qū)域?qū)⒘谐鰩讉€(gè)數(shù)據(jù)源控件,比如 SqlDataSource 和 XmlDataSource。某些數(shù)據(jù)源控件支持在網(wǎng)頁中使用頁內(nèi)存,其它控件則使用共享數(shù)據(jù)。由于報(bào)表不使用頁內(nèi)存,所以對(duì)于 ReportViewer Web server控件,最佳選擇是使用 ObjectDataSource 控件。此控件在內(nèi)存中緩存對(duì)象(DataTable 或業(yè)務(wù)對(duì)象集合)與報(bào)表數(shù)據(jù)區(qū)域之間架起了一座橋梁。假設(shè)向網(wǎng)頁中加入了 ReportViewer 控件,將會(huì)自己主動(dòng)加入和配置 ObjectDataSource 控件。
?
為了盡可能避免編寫額外代碼,ASP.NET 的網(wǎng)頁支持提供了額外的后臺(tái)處理來檢測(cè)提供可綁定業(yè)務(wù)對(duì)象的集合。假設(shè)向項(xiàng)目中加入的類將返回一個(gè)對(duì)象集合,且這些對(duì)象能夠被標(biāo)識(shí)為業(yè)務(wù)對(duì)象,則該集合將會(huì)自己主動(dòng)加入到“站點(diǎn)數(shù)據(jù)源”窗體中。
?
1.1.7.???????????????? 演練:在本地處理模式下將數(shù)據(jù)庫數(shù)據(jù)源與ReportViewer Webserver控件一起使用
本演練顯示了怎樣為 Microsoft Visual Studio 2005 ASP.NET 站點(diǎn)創(chuàng)建報(bào)表,以及怎樣向網(wǎng)頁加入 ReportViewer 控件,以便用戶能夠查看該報(bào)表。
?
?先決條件
本演練假定您能夠連接到 Oracle DataBase 實(shí)例,而且已建立EMPLOYEE_TABLE_2
表。您還必須對(duì)執(zhí)行 Microsoft Internet Information Services (IIS) 5.0 版或更高版本號(hào)的server具有訪問權(quán)限,并具有創(chuàng)建 ASP.NET 網(wǎng)頁的權(quán)限。
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 );
?
在您的計(jì)算機(jī)上運(yùn)行下面步驟,以使用 Visual Studio 2008 模板創(chuàng)建含有配置為查看您所創(chuàng)建報(bào)表的 ReportViewer 控件的 ASP.NET 網(wǎng)頁。常規(guī)步驟例如以下:
?
1.???????? 創(chuàng)建新的站點(diǎn)。
?
2.???????? 通過加入 DataSet 來定義數(shù)據(jù)連接和 DataTable。
?
3.???????? 設(shè)計(jì)報(bào)表。
?
4.???????? 將 ReportViewer 控件加入到應(yīng)用程序。
?
5.???????? 編譯和執(zhí)行應(yīng)用程序。
?
對(duì)于本演示樣例,在 Microsoft Visual C# 中創(chuàng)建應(yīng)用程序。
?
?創(chuàng)建新的站點(diǎn)
1.???????? 在“文件”菜單中,指向“新建”,選擇“站點(diǎn)”。
?
?
2.???????? 在“新建站點(diǎn)”對(duì)話框中,選擇“ASP.NET 站點(diǎn)”。
?
?
3.???????? 在“語言”列表中,選擇 Visual C#,再單擊“確定”。
?
4.???????? 在“位置”框中,保留選定的默認(rèn) HTTP,然后輸入站點(diǎn)根文件夾的位置,使用“瀏覽”導(dǎo)航及創(chuàng)建新的文件夾(假設(shè)須要)。單擊“確定”。
?
5.???????? 站點(diǎn)項(xiàng)目將打開,并顯示 Default.aspx 網(wǎng)頁。
?
6.???????? 在“查看”菜單上,選擇“設(shè)計(jì)器”。
?
如今您就能夠改動(dòng)站點(diǎn)的默認(rèn)頁。
?
?通過加入數(shù)據(jù)集來定義數(shù)據(jù)連接和 DataTable
1.???????? ??在web.config中配置數(shù)據(jù)庫連接
1)???????? 什么是web.config
可擴(kuò)展的基礎(chǔ)結(jié)構(gòu)是 ? ASP.NET ? 配置系統(tǒng)的一大特色,該基礎(chǔ)結(jié)構(gòu)使您能夠在最初部署 ? ASP.NET ? 應(yīng)用程序時(shí)定義配置設(shè)置,以便能夠隨時(shí)加入或改動(dòng)這些配置設(shè)置,同一時(shí)候?qū)\(yùn)作著的 ? Web ? 應(yīng)用程序和server產(chǎn)生的影響也將被減至最小。
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>
當(dāng)中Data Source是指tns中的Host String, User ID是oracle登陸username,Password是oracle登錄password。providerName是數(shù)據(jù)提供者。
?
2.???????? 在server資源管理器中,右鍵單擊站點(diǎn)項(xiàng)目(非解決方式節(jié)點(diǎn)),然后選擇“加入新項(xiàng)”。
?
3.???????? 在“加入新項(xiàng)”對(duì)話框中,單擊“數(shù)據(jù)集”。提示您是否應(yīng)將項(xiàng)加入到 App_Code 目錄是,請(qǐng)單擊“是”。這將把新的 XSD 文件 DataSet.xsd 加入到項(xiàng)目,打開數(shù)據(jù)集設(shè)計(jì)器,并調(diào)用 TableAdapter 配置向?qū)А?/span>
?
?
?
4.???????? 在“選擇您的數(shù)據(jù)連接”頁上,配置向?qū)ё约褐鲃?dòng)找到了Web.config中的連接,接受默認(rèn)連接并點(diǎn)擊下一步。
?
5.???????? 在“選擇命令類型”頁上,選擇“使用 SQL 語句”。
?
6.???????? 在“輸入 SQL 語句”頁上,輸入下面SQL 查詢以從 EMPLOYEE_TABLE_2表中中檢索數(shù)據(jù),再單擊“完畢”:
SELECT t.employee_id, t.employee_name, t.age FROM employee_table_2 t
?
還能夠單擊“查詢生成器”button,然后使用查詢生成器創(chuàng)建查詢,并使用“運(yùn)行查詢”button對(duì)其進(jìn)行檢查。
?
7.???????? 在“選擇要生成的方法”頁上,接受默認(rèn)值“填充 DataTable”(“方法名稱”:Fill)和“返回 DataTable”(“方法名稱”:GetData)。單擊“下一步”。
?
8.???????? 在“向?qū)ЫY(jié)果”頁上,單擊“完畢”。
如今已完畢將 ADO.NET DataTable 配置為報(bào)表的數(shù)據(jù)源。
忽略下面錯(cuò)誤,點(diǎn)擊確定。
?
9.???????? 在 Visual Studio 的“數(shù)據(jù)集設(shè)計(jì)器”頁上,應(yīng)看到加入的 DataTable(默認(rèn)名稱為 DataTable1),當(dāng)中列出了從查詢定義得到的列。在“數(shù)據(jù)”菜單中,能夠選擇“預(yù)覽數(shù)據(jù)”來檢查查詢結(jié)果。
?
?設(shè)計(jì)報(bào)表
1.???????? 在“站點(diǎn)”菜單上,選擇“加入新項(xiàng)”。
?
1.???????? 在“加入新項(xiàng)”對(duì)話框中,選擇“報(bào)表”模板,輸入報(bào)表文件的名稱,再單擊“加入”。這將創(chuàng)建報(bào)表定義文件(默覺得 Report.rdlc),啟動(dòng)報(bào)表設(shè)計(jì)器,并在左窗格中顯示“站點(diǎn)數(shù)據(jù)源”窗體。假設(shè)看不到“站點(diǎn)數(shù)據(jù)源”選項(xiàng)卡,請(qǐng)從“數(shù)據(jù)”菜單中選擇“顯示數(shù)據(jù)源”。
?
?
2.???????? 顯示工具箱,將“報(bào)表項(xiàng)”組中的“表”拖至報(bào)表設(shè)計(jì)圖面上。
表控件設(shè)計(jì)分三行,各自是表頭,具體信息,表尾。表頭是指報(bào)表的列字段,具體信息是綁定的列,既報(bào)表每列的數(shù)據(jù),表尾是報(bào)表的每列的底部數(shù)據(jù)
?
?
?
3.???????? 在“站點(diǎn)數(shù)據(jù)源”窗體,展開 DataTable1 節(jié)點(diǎn),直至看到查詢得到的列,然后將 Employee_Id 拖至表中第一列的中間行。中間行是具體信息行。請(qǐng)注意,指定具體信息行時(shí),標(biāo)題行會(huì)自己主動(dòng)填充。
?
4.???????? 將“Employee_Name”字段拖至第二列的具體信息行,使其位于 Employee_Id 字段旁邊。
?
5.???????? 將 Age 字段拖至第三列的具體信息行,使其位于 Employee_Name 字段旁邊。
?
6.???????? (可選)單擊第一行左側(cè)的“表格表頭”button,并選擇“粗體”格式樣式。
?
7.???????? 在“文件”菜單上,選擇“所有保存”。
?
?向應(yīng)用程序加入 ReportViewer 控件
1.???????? 在解決方式資源管理器中,右鍵單擊 Default.aspx,選擇“視圖設(shè)計(jì)器”。
?
2.???????? 將工具箱中的“數(shù)據(jù)”組中的 ReportViewer 控件拖至頁面。
?
1)???????? 假設(shè)“數(shù)據(jù)”節(jié)點(diǎn)下沒有ReportViewer圖標(biāo),則右擊“數(shù)據(jù)”節(jié)點(diǎn),選擇“選擇項(xiàng)”。
?
2)???????? 在.NET Framework組件選項(xiàng)卡下選中命名空間為Microsoft.Reporting.WebForm下的ReportViewer,點(diǎn)擊確定。
?
3.???????? 通過單擊網(wǎng)頁上 ReportViewer 控件右上角中的三角形,打開“ReportViewer 任務(wù)”智能標(biāo)記面板。在“選擇報(bào)表”框中,選擇 Report.rdlc 的全然限定文件名稱。
?
選擇報(bào)表后,將自己主動(dòng)創(chuàng)建報(bào)表中使用的數(shù)據(jù)源的實(shí)例。并生成代碼以實(shí)例化每一個(gè) DataTable(及其 DataSet 容器)以及與報(bào)表中使用的每一個(gè)數(shù)據(jù)源相相應(yīng)的 ObjectDataSource 控件。此數(shù)據(jù)源控件自己主動(dòng)進(jìn)行配置。
?
????
?
注意
若要了解為什么 ASP.NET 使用 ObjectDataSource 控件而不使用 SqlDataSource 控件(即使基礎(chǔ)數(shù)據(jù)源可能是數(shù)據(jù)庫或某些其它強(qiáng)類型化的數(shù)據(jù)存儲(chǔ)),請(qǐng)參閱為 ReportViewer 報(bào)表創(chuàng)建數(shù)據(jù)源。
?編譯和執(zhí)行應(yīng)用程序
1.???????? 設(shè)置Default.aspx為起始頁,按 Ctrl+F5 在不調(diào)試情況下執(zhí)行頁,或者按 F5 在執(zhí)行頁時(shí)進(jìn)行調(diào)試。
?
在編譯進(jìn)程中包含對(duì)報(bào)表進(jìn)行編譯,并將發(fā)現(xiàn)的全部錯(cuò)誤(比如,報(bào)表中使用的表達(dá)式中的語法錯(cuò)誤)加入到“任務(wù)列表”。
?
網(wǎng)頁顯示在瀏覽器中。ReportViewer 控件顯示報(bào)表。能夠使用工具欄瀏覽報(bào)表、縮放及導(dǎo)出到 Excel。
?
2.???????? 關(guān)閉瀏覽器。
1.1.8.???????????????? 演練:在本地處理模式下將業(yè)務(wù)對(duì)象數(shù)據(jù)源與ReportViewer Webserver控件一起使用
?
本演練說明了怎樣在 Microsoft Visual Studio 2005 ASP.NET 應(yīng)用程序中的報(bào)表中使用對(duì)象數(shù)據(jù)源。有關(guān)業(yè)務(wù)對(duì)象和對(duì)象數(shù)據(jù)源的具體信息,請(qǐng)參閱Binding to Business Objects。
?
請(qǐng)運(yùn)行下列步驟向 Visual Studio ASP.NET 站點(diǎn)項(xiàng)目加入報(bào)表。本演示樣例將用 Microsoft Visual C# 來創(chuàng)建應(yīng)用程序。
?
?創(chuàng)建新的 ASP.NET 站點(diǎn)項(xiàng)目
1.???????? 在“文件”菜單中,指向“新建”,然后選擇“站點(diǎn)”。
?
2.???????? 在“新建站點(diǎn)”對(duì)話框中,從“語言”下拉列表中選擇 Visual C#,并選擇 ASP.NET 站點(diǎn)模板。
3.???????? 在“位置”中,選擇 HTTP 并鍵入站點(diǎn)的 URL。默認(rèn)的 URL 為 http://localhost/WebSite。改為http://localhost/ReportViewerTest,單擊“確定”。
?
?創(chuàng)建要用作數(shù)據(jù)源的業(yè)務(wù)對(duì)象。
1.???????? 在解決方式資源管理器中選擇項(xiàng)目站點(diǎn)(以“http://”開頭)。右鍵單擊并選擇“加入新項(xiàng)”。
?
?
2.???????? 在“加入新項(xiàng)”對(duì)話框中,選擇“類”,鍵入 Employee.cs 作為文件名稱,然后單擊“加入”。
?
3.???????? 在詢問“是否要將該類放在‘App_Code’目錄中”的消息框中,選擇“是”。新文件將被加入到項(xiàng)目中并在 Visual Studio 中自己主動(dòng)打開。
?
4.???????? 在Oracle數(shù)據(jù)庫中事例創(chuàng)建表
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中配置數(shù)據(jù)庫連接
3)???????? 什么是web.config
可擴(kuò)展的基礎(chǔ)結(jié)構(gòu)是 ? ASP.NET ? 配置系統(tǒng)的一大特色,該基礎(chǔ)結(jié)構(gòu)使您能夠在最初部署 ? ASP.NET ? 應(yīng)用程序時(shí)定義配置設(shè)置,以便能夠隨時(shí)加入或改動(dòng)這些配置設(shè)置,同一時(shí)候?qū)\(yùn)作著的 ? Web ? 應(yīng)用程序和server產(chǎn)生的影響也將被減至最小。
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>
當(dāng)中Data Source是指tns中的Host String, User ID是oracle登陸username,Password是oracle登錄password。providerName是數(shù)據(jù)提供者。
6.???????? 加入對(duì)System.Data.OracleClient的引用
1)???????? 右擊站點(diǎn)項(xiàng)目,在彈出的選項(xiàng)卡下選擇加入引用
?
?
2)???????? 找到.net標(biāo)簽頁下找到System.Data.OracleClient,單擊確定。
?
7.???????? 將 Employee.cs 的默認(rèn)代碼替換為下面代碼:
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: 在此處加入構(gòu)造函數(shù)邏輯 // } 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.???????? 從“項(xiàng)目”菜單中,選擇“生成解決方式”。這將為對(duì)象創(chuàng)建程序集,并在您向項(xiàng)目中加入報(bào)表后,使業(yè)務(wù)對(duì)象“Employee”顯示在“站點(diǎn)數(shù)據(jù)源”窗體中。
?
?向項(xiàng)目中加入報(bào)表
1.???????? 請(qǐng)確保在解決方式資源管理器中選中了項(xiàng)目站點(diǎn)或某個(gè)項(xiàng)目項(xiàng)。
?
2.???????? 右鍵單擊項(xiàng)目站點(diǎn)并選擇“加入新項(xiàng)”。
?
3.???????? 在“加入新項(xiàng)”對(duì)話框中,選擇“報(bào)表”。鍵入報(bào)表的名稱,然后單擊“加入”。該報(bào)表將被加入到項(xiàng)目中并在報(bào)表設(shè)計(jì)器中自己主動(dòng)打開。報(bào)表的默認(rèn)名稱為 Report.rdlc。
?
?檢查“站點(diǎn)數(shù)據(jù)源”窗體
2.???????? 單擊“Report.rdlc 設(shè)計(jì)”選項(xiàng)卡。在左側(cè)窗格中,單擊“站點(diǎn)數(shù)據(jù)源”選項(xiàng)卡。假設(shè)看不到“站點(diǎn)數(shù)據(jù)源”選項(xiàng)卡,請(qǐng)從“數(shù)據(jù)”菜單中選擇“顯示數(shù)據(jù)源”。
?
3.???????? 確認(rèn)對(duì)象“Employee”及其3個(gè)公共屬性“id”,“名稱”和“年齡”都顯示在“站點(diǎn)數(shù)據(jù)源”窗體中的層次結(jié)構(gòu)中。
?
?設(shè)計(jì)報(bào)表
1.???????? 假設(shè)報(bào)表是以設(shè)計(jì)模式打開的,請(qǐng)打開工具箱。從工具箱中將某個(gè)表控件拖到報(bào)表上。該表控件將在一個(gè)選項(xiàng)卡式設(shè)計(jì)窗體中打開。
?
2.???????? 表控件設(shè)計(jì)分三行,各自是表頭,具體信息,表尾。表頭是指報(bào)表的列字段,具體信息是綁定的列,既報(bào)表每列的數(shù)據(jù),表尾是報(bào)表的每列的底部數(shù)據(jù)。
????
3.???????? 從“站點(diǎn)數(shù)據(jù)源”窗體,將“Employee”數(shù)據(jù)源中的“EmployeeId”字段拖到表的具體信息行的第一列中。具體信息行是中間行。請(qǐng)注意,當(dāng)您指定具體信息行后,系統(tǒng)將自己主動(dòng)填充標(biāo)題行。
?
4.???????? 將“EmployeeName”字段拖到具體信息行的第二列中,使其顯示在“EmployeeId”字段的旁邊。第三列EmployeeAge同上。(可選操作)通過單擊左側(cè)的表格表頭圖標(biāo)并應(yīng)用粗體樣式來選擇標(biāo)題行。
???
5.???????? 若要向報(bào)表中加入標(biāo)題,請(qǐng)打開工具箱并將一個(gè)文本框拖到報(bào)表上。將該文本框置于表上方。鍵入 Employee 作為報(bào)表名稱。(可選操作)對(duì)文本應(yīng)用字號(hào)和字體樣式來突出標(biāo)題。
?
?向網(wǎng)頁中加入 ReportViewer 控件
1.???????? 通過在解決方式資源管理器中右鍵單擊 Default.aspx,選擇設(shè)計(jì)視圖中的默認(rèn)網(wǎng)頁,然后選擇“視圖設(shè)計(jì)器”。
2.???????? 打開工具箱。在工具箱中,展開“數(shù)據(jù)”節(jié)點(diǎn)并將 ReportViewer 圖標(biāo)拖到網(wǎng)頁上。
?
3)???????? 假設(shè)“數(shù)據(jù)”節(jié)點(diǎn)下沒有ReportViewer圖標(biāo),則右擊“數(shù)據(jù)”節(jié)點(diǎn),選擇“選擇項(xiàng)”。
?
4)???????? 在.NET Framework組件選項(xiàng)卡下選中命名空間為Microsoft.Reporting.WebForm下的ReportViewer,點(diǎn)擊確定。
?
3.???????? 選擇 ReportViewer 控件,并通過單擊右上角的三角形打開智能標(biāo)記面板。單擊“選擇報(bào)表”下拉列表并選擇剛才設(shè)計(jì)的報(bào)表。默認(rèn)情況下,名稱為 c:/inetpub/wwwroot/ReportViewerTest/Report.rdlc。請(qǐng)注意,ObjectDataSource 控件直接顯示在 ReportViewer 控件以下,并自己主動(dòng)設(shè)置為檢索 DataTable 的內(nèi)容,就像通過數(shù)據(jù)表的 TableAdapter 組件所配置的那樣。
?
?
????
?執(zhí)行應(yīng)用程序
l? 把Default.aspx設(shè)為起始頁,按 F5 以邊執(zhí)行邊調(diào)試,或按 CTRL + F5 以執(zhí)行而不調(diào)試,然后查看報(bào)表。
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/mengfanrong/p/3794047.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NETserver控件使用之Reportviewer 报表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 国内外著名安全站点
- 下一篇: r语言 线性回归 相关系数_基于R语言的
