為非同步轉譯設定 ReportViewer

若要針對非同步轉譯設定 ReportViewer Web 伺服器控制項,您必須設定轉譯和處理模式。轉譯行為是由控制項上的 AsyncRendering 屬性所指定,而處理行為則是由 ProcessingMode 屬性所指定。這兩個屬性結合在一起時,可定義 ASP.NET 網頁將如何轉譯。

下表描述不同轉譯和處理模式的 ReportViewer 控制項行為。

屬性設定

本機處理模式 (LocalReport 類別)

遠端處理模式 (ServerReport 類別)

AsyncRendering = True

  • 使用 IFRAME

  • 無回傳 1

  • 同步處理

  • 使用 IFRAME

  • 無回傳 1

  • 非同步處理

AsyncRendering = False

  • 內嵌 HTML

  • 回傳

  • 同步處理

  • 內嵌 HTML

  • 回傳

  • 同步處理

當 AsyncRendering 設定為 True 時,如果您在程式碼中訂閱導覽事件將會發生回傳,但是 Drillthrough 事件除外。不論事件訂閱為何,這個事件都將回傳。如果此屬性設定為 False,則不論您是否已訂閱事件,都將發生回傳。

非同步模式

當 AsyncRendering 屬性設定為 True 時,ReportViewer 將會轉譯頁面上 IFRAME 內的報表。藉由使用 IFRAME,可以載入頁面的其餘部分,而不會由 ReportViewer 控制項封鎖。

本機和遠端處理模式都會使用 IFRAME 來轉譯報表。但是,ReportViewer 轉譯進度指標 (如果啟用的話) 的方式會有所差異。在本機處理報表時,報表的進度指標要等到所有的處理完成時,才可以轉譯。在遠端處理報表時,當報表在伺服器上處理時會顯示進度指標 (如果啟用的話)。

ms252090.collapse_all(zh-tw,VS.140).gifXHTML 和 ReportViewer Web 伺服器控制項的考量

如果您設定 ReportViewer Web 伺服器控制項,於非同步模式下在透過 XHTML 撰寫的應用程式內執行,您必須遵循特定的步驟來正確顯示 ReportViewer 控制項。如果 ReportViewer 控制項使用相對高度 (例如,如果將高度指定為可用空間的某個百分比),此控制項會因為框架和 DIV 標記在 XHTML 的包含資料表中轉譯的方式,而摺疊為零 (0) 像素的高度。若要避免這個問題,您可以採取下列其中一個動作:

  • 明確將 ReportViewer 控制項上的高度設定為實際值,而不是百分比。

  • 將下列樣式設定加入到 <head> 標記:<style>html,body,form {height:100%}</style>。強制將 HTML、body 和 form 標記設定為最大高度,ReportViewer 控制項中所使用的框架也會變成最大高度,以便在頁面上看到它。

  • 從頁面中移除 xhtml doctype。

同步模式

當 AsyncRendering 屬性設定為 False 時,ReportViewer 會將報表轉譯為頁面其餘部分中的內嵌 HTML。由於 HTML 是內嵌的,所以在處理和轉譯報表時,將會封鎖頁面的其餘部分。

注意事項注意事項

如果報表包含文件引導模式,而且在同步模式中轉譯報表,將不會顯示文件引導模式。

請參閱

參考

ReportViewer

ReportViewer 屬性

概念

ReportViewer 的 Web.config 設定

ReportViewer Web 伺服器和 Windows Form 控制項

設定 ReportViewer 的本機處理

設定 ReportViewer 的遠端處理