Geo*_*ros 2 sql-server asp.net reportviewer reporting-services
当我在我的asp.net应用程序中运行带有参数的报告时,我看到将div加载到无穷大 而没有任何错误迹象(所以我不知道如何在谷歌中搜索此问题)
note1: 我可以直接从报表服务器运行相同的报表
注意2: 如果我删除了参数,它从asp.net页面和报表服务器正常运行
protected void Page_Load(object sender, EventArgs e)
{
oID = (Int64)Session["OID"];
ViewReport();
}
public void ViewReport()
{
string reportServerUrl = ConfigurationManager.AppSettings.Get("ReportServerPath");
ReportViewer.ServerReport.ReportServerUrl = new System.Uri(reportServerUrl);
ReportViewer.ServerReport.ReportPath = @"/StoReports/MyReport";
ReportViewer.ServerReport.SetParameters(new ReportParameter("OID", oID.ToString()));
ReportViewer.ServerReport.Refresh();
}
Run Code Online (Sandbox Code Playgroud)
在一个名为Sys $ WebForms $ PageRequestManager $ _endPostBack的函数中(错误,执行程序,数据)
工具 sql server Denali,visual studio 2010
1-Browser向ASPX页面发出GET请求以获取页面内容和报告的加载指示符.
2-Browser向ASPX页面发出POST请求以获取报告的HTML(此内容位于UpdatePanel中).
3浏览器向HTTP处理程序发出GET请求以获取报告中的所有图像在步骤2中,获取报告内容的请求运行ASP.Net页面,包括您在页面中放置的任何代码.
为什么这很重要?代码已添加到页面的load事件中,该事件更改了报表查看器的状态.我见过的最常见的例子是用户代码在load事件中调用SetParameters,尽管有几种方法和属性会触发它.更改参数值会告诉ReportViewer它需要重新启动报告处理.实际上,它告诉观众返回步骤1 - 将加载指示器放入浏览器并重新启动报告处理.如果在每次回发期间执行此操作,则查看器永远不会成功完成步骤2.它只会进入无限循环.
像SetParameters这样的调用方法并不便宜.每次调用都会触发到报表服务器的往返.所以这是你想要最小化的电话.通过仅在初始GET请求期间调用SetParameters或仅在参数值实际更改时,您可以提高应用程序的性能并打破循环.在调用SetParameters之前简单检查IsPostBack通常就足够了.
| 归档时间: |
|
| 查看次数: |
6366 次 |
| 最近记录: |