2011-06-16 50 views
3

好吧我已经一直在寻找和尝试不同的想法六个小时,我还没有找到一个解决方案。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> 

关于如何让这两位经理好好玩的想法?

+0

你用什么样的代码来调用函数?我通常必须确保在每次发布页面时刷新报告,即如果(!Page.IsPostBack)无法让报告查看器正常工作,则必须刷新报告。 – 2011-06-16 08:11:55

+0

我正在使用一个名为EXT.Net的框架,一个用于Sencha ExtJS的.Net包装器,你猜这是不足之处。在框架中,我称之为服务器端方法。 txtSelectedUser_onChange = function(){Ovott2.SelectedUser_Changed();}所有这些工作都会导致page_init和page_load触发并且Page.isPostBack为true; – 2011-06-16 08:22:03

+0

我现在也问过EXT.Net论坛上的这个问题,如果有人感兴趣http://forums.ext.net/showthread.php?14197-Script-Manager-and-Resource-Manager-Conflict – 2011-06-16 10:19:45

回答

1

您是否设置了scriptmanager.EnablePartialRendering标志为true

+1

我试过启用它现在仍然没有欢乐 – 2011-06-16 08:42:46

+1

我接受这是唯一的答案 – 2011-06-30 07:44:40

1

尝试将ReportViewer放入UpdatePanel中,或者调用ReportViewer1.Update方法(我没有试过这种方法),Update方法是从Ext.Net到所有控件的扩展方法,用于刷新客户端中的控件状态。

我希望它适合你。 Regards, PaúlSomarriba