2012-06-12 3 views
1

У нас был элемент управления MS ReportViewer 9.0.0.0 на пользовательском модуле DotNetNuke в версии (legacy) 4.8.2. При попытке перейти на 10.0.0.0 бежим в следующую ошибку:ReportViewer 10.0.0.0 в DotNetNuke 4.8.X: PageLoadException

PageLoadException: Page cannot be null. Please ensure that this operation is being performed in the context of an ASP.NET request.

Вот соответствующий ASCX код для главного вида управления в модуле DotNetNuke:

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, 
    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %> 

<rsweb:ReportViewer ID="report" runat="server" ProcessingMode="Remote" /> 

Кроме того, есть некоторый код позади который устанавливает IReportServerCredentials, я оставил этот бит кода, поскольку проблема возникает до того, как отчет даже будет отображаться.

Трассировка стека достаточно большой, но вот некоторые из соответствующих битов:

DotNetNuke.Services.Exceptions.PageLoadException
System.InvalidOperationException: Page cannot be null
at System.Web.UI.ScriptManager.get_IPage()
...
at Microsoft.Reporting.WebForms.ReportViewer.Render(HtmlTextWriter writer)
...
at DotNetNuke.Framework.PageBase.Render(HtmlTextWriter writer)

Мой Google-фу не помогает мне на всех. Я пытался возиться с ScriptManager в файле Default.aspx.vb DotnetNuke, играя со свойствами элемента управления ReportViewer и читая различные связанные статьи MSDN. Нет кубиков.

Вопрос: Как получить ReportViewer 10.0.0.0, работающий в DotNetNuke 4.8.x?

ответ

1

Это один из немногих вопросов, которые у меня были в последнее время, на которые нельзя было ответить, выполнив поиск по SO. После некоторого поворота я решил проблему и решил, что я дам новый Answer your own question. Итак, вот что решило проблему для меня.


Эта проблема может быть решена путем включения реализации DotNetNuke AJAX для конкретного управления в модуле, который содержит ReportViewer. Кредиты отправляются в this old post, где подробно описаны шаги, необходимые для этого. См. Также 2007 DotNetNuke blogpost on this feature. Суть заключается в следующем:

  1. Войти как DNN Хост
  2. Перейти к определению модуля для модуля
  3. Редактировать настройки для модуля
  4. Найти контроль с ReportViewer
  5. Нажмите для редактирования настроек для управления
  6. Хит Поддержка частичного рендеринга установка checkbox
  7. Сохранение настроек

Теперь управление ReportViewer должно работать.