ReportViewer 异步处理 AsyncRendering

 

asp.net  将AsyncRendering 高为true 已iframe 输出,点击reportviewer 内容的排序或其他操作页面为撑开

 

http://msdn.microsoft.com/zh-cn/library/ms252090(VS.80).aspx

 

将 ReportViewer 配置为进行异步处理
将 ReportViewer 配置为进行异步处理

 

如果您使用的是 ReportViewer Web 服务器控件,则可以将该控件配置为以同步或异步模式来处理报表。若要配置 ReportViewer 控件,请将 AsyncRendering 设置为 True 以采用异步模式,或者设置为 False 以采用同步模式。

同步模式

同步模式将立即加载报表。不使用任何框架。每次当您浏览到一页或重新加载一页时,都会发生回发操作。因为此模式不支持框架,所以不支持文档结构图。如果加载包含文档结构图的报表,则该文档结构图将不显示。

异步模式

异步模式是默认模式。在此模式中,处理报表时会立即加载 ReportViewer 工具栏。在处理报表的过程中,报表视图区将会显示进度指示。完成报表处理后,视图区将显示第一页。当前页存储在内存或临时存储区中,具体取决于配置设置。每次将生成一页。当用户导航到另一报表页时,将生成下一页,并且视图区中的框架会被更新以显示新页。框架被刷新后,工具栏选项将不可用。

注意

报表处理进度指示并非在每个浏览器类型中都可见。有关详细信息,请参阅 ReportViewer Web 服务器控件的浏览器支持

 

在某些情况下,即使启用了 AsyncRendering,异步模式也会被替换为同步模式。

  • 如果该控件被配置为使用在本地进行处理的客户端报表定义 (.rdlc) 文件,则即使应用程序具有所有直观的异步处理特征,页处理也将是同步的。

  • 如果您订阅针对 ReportViewer 控件的事件(例如,订阅针对该控件的页导航事件),则当导航报表页或单击文档结构图中的链接时,可能会获得回发。

XHTML 和 ReportViewer Web 服务器控件的注意事项

如果将 ReportViewer Web 服务器控件配置为以异步模式在用 XHTML 编写的应用程序中运行,则必须遵循特定的步骤以便正确显示 ReportViewer 控件。如果 ReportViewer 控件使用相对高度(例如,将高度指定为可用空间的百分比),则由于框架和 DIV 标记在 XHTML 格式的包含表中的呈现方式,该控件将折叠为 0 像素的高度。您可以使用下列解决方法之一来避免此问题:

  • 将 ReportViewer 控件的高度显式设置为一个实际值,而不是百分比。

  • 向顶部标记添加以下样式设置:<style>html,body,form {height:100%}</style>。通过强制 html、表体和窗体标记具有最大高度,ReportViewer 控件中使用的框架也将增长为最大高度,从而使其在页中可见。

  • 从页中删除 xhtml 文档类型。

选择模式

使用下列建议来确定采用哪个模式:

  • 对于大型报表或具有复杂查询的服务器报表,应选择异步模式。

  • 如果窗体或网页包含多个要一起加载而不延误报表处理的小型报表,或者要使用可快速处理的小型报表,则应选择同步模式。

 

----------------------------------------------------------------------------------------

 

配置 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 呈现进度指示器(如果启用)时的方式不同。当在本地处理报表时,只有在所有的处理工作全部完成之后,才能呈现报表的进度指示器。而如果在远程处理报表,则在服务器上处理报表的过程中,即可显示进度指示器(如果启用)。

XHTML 和 ReportViewer Web 服务器控件的注意事项

如果将 ReportViewer Web 服务器控件配置为在用 XHTML 编写的应用程序中以异步模式运行,则必须按照特定的步骤操作,才能正确显示 ReportViewer 控件。当 ReportViewer 控件使用相对高度(例如,将高度指定为可用空间的百分比)时,由于框架和 DIV 标记在 XHTML 格式的包含表中的呈现方式,该控件会折叠为零 (0) 像素的高度。可通过执行下列操作之一来避免此问题:

  • ReportViewer 控件的高度显式设置为实际值,而不是百分比。

  • 将以下样式设置添加到 <head> 标记中:<style>html,body,form {height:100%}</style>。通过强制 HTML、主体以及窗体标记采用最大高度,ReportViewer 控件中使用的框架也会增至最大高度,进而从页面上显示出来。

  • 从页中删除 xhtml 文档类型。

同步模式

AsyncRendering 属性设置为 False 时,ReportViewer 将在页面的其余部分中将报表呈现为嵌入式 HTML。由于 HTML 采用嵌入形式,因此在处理和呈现报表时,将阻止页面的其余部分。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值