0

我有一个小型 Web 项目,该项目的唯一目的是为更大的应用程序容纳和生成报告。

我有一个页面“ReportManager.aspx”,上面只有一个 ReportViewer (10.0) 控件。

<div style="width:auto;">
    <form id="Form1" runat="server" style="width:100%; height: 100%;">
        <asp:ScriptManager ID="ScriptManager1" runat="server">          
        </asp:ScriptManager>
        <rsweb:reportviewer id="ReportViewer1" runat="server" Width="100%" Height="100%"     AsyncRendering="false"  SizeToReportContent="true"></rsweb:reportviewer>
    </form>        
</div>

<script runat="server">
    private void Page_Load(object sender, System.EventArgs e)
    {
        if (IsPostBack)
        return;

        ReportViewer1.ProcessingMode = ProcessingMode.Remote;
        ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://localhost/ReportServer");
        ReportViewer1.ServerReport.ReportPath = "/SSRSReport";
        ReportParameter param = new ReportParameter("effective_date", "4/22/2013");
        ReportViewer1.ServerReport.SetParameters(param);
        ReportViewer1.PageCountMode = PageCountMode.Actual;
    }
</script>

在运行时更改报表查看器控件上的页面会产生错误。

错误在: Reserved.ReportViewerWebControl.axd?OpType=Resource&Version=10.0.30319.1&Name=ViewerScript

在第 3559 行,如下所示:

    // Remove the current STYLE element, if it already exists.
    if (oldStyleElement != null)
        headElement.removeChild(oldStyleElement);

headElement.removeChild(oldStyleElement);是错误显示 htmlfile: Invalid argument 的行。休息 | 继续 | 忽视。

单击“继续”会导致报表在没有任何样式的情况下呈现。单击“忽略”可使报表正确呈现。

我正在运行 Windows 2012 Server、Visual Studio 2012 Premium 和 IE8。Win 7 机器上也会出现同样的错误。

有什么建议或已知的修复吗?

4

2 回答 2

0

我的报告也在 MVC 应用程序中。我实际上在不久前解决了这个问题。我想我通过删除以下几行来修复它:

ReportViewer1.ProcessingMode = ProcessingMode.Remote;
ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://localhost/ReportServer");
ReportViewer1.ServerReport.ReportPath = "/SSRSReport";

ReportViewer1.PageCountMode = PageCountMode.Actual;

我更改了代码以将所有数据存储在标签中。

我做的另一件事是在 ReportViewer1.ServerReport.SetParameters(param) 下面添加 ReportViewer1.ServerReport.Refresh()。

在我做出这些改变之后,一切都开始工作了。

于 2014-02-07T18:56:07.007 回答
0

虽然怀疑它会有所帮助,但我尝试像您建议的那样删除尽可能多的代码隐藏,但这并没有为我解决问题。

但是,这是我们应用程序中的解决方案:

承载 ReportViewer 控件的 .aspx 页缺少其<body>标记。

仅此而已

反高潮,我知道,但显然这会导致 IE8(至少)呕吐

headElement.removeChild(oldStyleElement);

我很好奇在您的应用程序中执行相同操作是否会导致错误恢复。

我通过谷歌找到的只有少数资源可以解决这个问题,我不敢相信其中没有提到这一点:-x

于 2014-02-13T18:41:39.150 回答