Microsoft ReportViewer Web控件需要ScriptManager

May*_*aya 12 c# ajax reportviewer .net-4.0 visual-studio-2010

我正在尝试以编程方式在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);
            }
        }
Run Code Online (Sandbox Code Playgroud)

虽然我已将ScriptManager添加到页面但运行时抱怨ReportViewer需要一个,但它会在p.RenderControl(myWriter)行引发以下异常

报表查看器Web控件需要Web表单上的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 */}
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.这是在.NET 4上完成的,我正在使用ReportViewer 2010.

小智 7

在我的情况下,只需把指令

<%@ 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>
Run Code Online (Sandbox Code Playgroud)

在aspx表单源模式下工作!!