ReportViewer 2010 не обновляется при асинхронной обратной передаче - PullRequest
3 голосов
/ 16 июня 2011

Хорошо, я искал и пробовал разные идеи в течение хороших шести часов, и я не нашел решения.

Я использую 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>

ОБНОВЛЕНИЕ

У меня есть как диспетчер сценариев ASP, так и диспетчер ресурсов EXT.Net, как показано ниже, и это вызывает ошибку.Как только я удаляю Resource Manager, он работает нормально, но он мне нужен для других функций на этой странице.Также вопрос о размещении отчета в iFrame исключен.

<ext:ResourceManager ID="ResourceManager1" runat="server" Locale="en-GB" />
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

Есть какие-нибудь идеи о том, как заставить этих двух менеджеров хорошо играть вместе?

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Попытайтесь поместить ReportViewer в UpdatePanel или вызовите метод ReportViewer1.Update (я не пробовал этого), метод Update является расширением из Ext.Net для всех элементов управления, которые обновляют состояние элемента управления в клиенте.

Я надеюсь, что это работает для вас.С уважением, Пауль Сомарриба

1 голос
/ 16 июня 2011

Вы установили scriptmanager.EnablePartialRendering флаг true?

...