Веб-элемент управления Microsoft ReportViewer, требующий ScriptManager

Я пытаюсь визуализировать средство просмотра отчетов на пользовательской странице, помещенной в контекст IHttpHandler.

ReportViewer rv = new ReportViewer();
ReportDataSource rds = new ReportDataSource();
rds.Name = "Report";
rv.LocalReport.ReportPath = "Report.rdlc";

rds.Value = SomeReportObject;

rv.LocalReport.DataSources.Add(rds);
rv.LocalReport.Refresh();

ScriptManager scriptHandler = new ScriptManager();
MyPage p = new MyPage();
p.Controls.Add(scriptHandler);
p.Controls.Add(rv);

using (TextWriter myTextWriter = new StringWriter())
        {
            using (HtmlTextWriter myWriter = new HtmlTextWriter(myTextWriter))
            {
               p.RenderControl(myWriter);
            }
        }

Несмотря на то, что на страницу добавлен ScriptManager, но среда выполнения жалуется, что он нужен ReportViewer, он выдает следующее исключение в строке p.RenderControl (myWriter)

Для веб-элемента управления Report Viewer требуется наличие в веб-форме System.Web.UI.ScriptManager.

И это класс MyPage

public class MyPage : Page
{

    public override void VerifyRenderingInServerForm(Control control)
    {
        //Empty Method
    }

    public override bool EnableEventValidation
    {
        get { return false; }
        set { /* Do nothing */}
    }
}

Любая помощь будет принята с благодарностью. Это сделано в.NET 4, и я использую ReportViewer 2010.

2 ответа

В моем случае просто поставить инструкцию

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

в режиме источника формы aspx и работает!

Ошибка выглядит так, будто при выполнении рендеринга отсутствует тег формы. Для выполнения Задачи ScriptManager требуется тег формы с сервером runat.

Я бы предложил вам добавить все ваши элементы управления в свойство формы страницы. В Sequence и ScriptManager должен быть первый элемент управления.

Надеюсь, это поможет.

Другие вопросы по тегам