好吧我已经一直在寻找和尝试不同的想法六个小时,我还没有找到一个解决方案。ReportViewer 2010不刷新异步回发
我使用Visual Studio 2010中,C#,ASP.Net 4.0的ReportViewer 10
我有一个JavaScript函数,使一个异步调用刷新用新值报告参数,然后重新加载报告。一切按预期执行,但报告不会显示新数据。
如果我从一个按钮做普通回发,那么它就可以工作,但只要它是异步回发,它就不会。我已经阅读了渲染可能在页面生命周期的最后阶段等等,但这已经让我无处可去。这是我用来设置参数的代码。
代码背后:
//Tried with and without this line and it makes no differed
ReportViewer1.Reset();
ReportViewer1.ProcessingMode = ProcessingMode.Remote;
List<ReportParameter> rParams = new List<ReportParameter>();
rParams.Add(new ReportParameter("UserID", SelectedUserID.ToString(), false));
rParams.Add(new ReportParameter("PayrollSalesMonthID", "13", false));
ReportViewer1.ServerReport.ReportServerUrl = new Uri("...");
ReportViewer1.ServerReport.ReportPath = "...";
ReportViewer1.ServerReport.SetParameters(rParams);
//Tried with and without this line and it makes no differed
ReportViewer1.ServerReport.Refresh();
标记:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" BorderStyle="None" Width="100%" Height="98%" SizeToReportContent="true" AsyncRendering="true" />
</rsweb:ReportViewer>
UPDATE
我同时拥有ASP脚本管理和EXT.Net资源管理器在我的页面如下,这是导致错误。只要我删除了资源管理器,它就可以正常工作,但我确实需要它在此页面上提供其他功能。将报告放入iFrame中也不成问题。
<ext:ResourceManager ID="ResourceManager1" runat="server" Locale="en-GB" />
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
关于如何让这两位经理好好玩的想法?
你用什么样的代码来调用函数?我通常必须确保在每次发布页面时刷新报告,即如果(!Page.IsPostBack)无法让报告查看器正常工作,则必须刷新报告。 – 2011-06-16 08:11:55
我正在使用一个名为EXT.Net的框架,一个用于Sencha ExtJS的.Net包装器,你猜这是不足之处。在框架中,我称之为服务器端方法。 txtSelectedUser_onChange = function(){Ovott2.SelectedUser_Changed();}所有这些工作都会导致page_init和page_load触发并且Page.isPostBack为true; – 2011-06-16 08:22:03
我现在也问过EXT.Net论坛上的这个问题,如果有人感兴趣http://forums.ext.net/showthread.php?14197-Script-Manager-and-Resource-Manager-Conflict – 2011-06-16 10:19:45