我遇到标准ASP.NET ReportViewer控件(v11,SQL 2012,VS 2012)的问题。这是以前在某个时候工作,连接到远程SSRS服务器,但在网站的开发过程中有些东西打破了它,我正在努力找出原因。
如果我创建一个简单的表单:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ReportTest.aspx.cs" Inherits="ReportTest" %>
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
This is a test!
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">
<ServerReport ReportPath="/Reports/MyTestReport" ReportServerUrl="http://sqlserver/reportserver" />
</rsweb:ReportViewer>
</div>
</form>
</body>
</html>
..然后运行它,浏览器上显示 nothing 。甚至不是This is a test!
文本,这表明服务器端的某些内容正在“崩溃”。支持这个理论,使用Fiddler我可以看到没有尝试联系报表服务器。
我已经在Visual Studio中打开了所有异常捕获,但没有任何捕获,并且没有任何明显的东西可以在输出中看到。 ReportViewer控件在设计模式下正确显示,我重新安装了ReportViewer可再发行组件。
答案 0 :(得分:3)
我发现了这个问题,或者更确切地说是两个问题:
我需要在页面上有一个ScriptManager。使用上面的测试网页创建一个全新的项目会引发有关ScriptManager要求的错误,尽管原始项目中的测试页(实际上是我的原始生产页面)没有抱怨丢失的ScriptManager。我一定是错误地删除了原来的ScriptManager。为了解决这个问题,我需要添加的是:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
其次 - 这是在生产代码本身 - 我有参数
ShowParameterPrompts="True"
定义此选项后,页面将无法加载,从而产生与上述相同的错误。但是,删除该选项可以使页面正常加载。
答案 1 :(得分:2)
我想我有类似的东西。当我将代码添加到Page_Init而不是Page_Load时,我已经修复了它。
尝试添加此行:
rptv.ServerReport.Refresh();
答案 2 :(得分:2)
this.ReportViewer1.AsyncRendering = false;
这使我的网页工作了。
答案 3 :(得分:0)
如果要发送可以接受空值的参数,则必须在ReportViever中接受null。他没有给我显示空白报告而没有给出任何错误。