v14.0 Web 报表查看器控件不显示报表正文
v14.0 Web Report Viewer Control not displaying body of report
我希望有人知道我正在经历什么。
多年来,我一直在使用各种版本的 Report Viewer 控件(包括 WinForms 和 Web),并且刚刚开始尝试在 ASP 中使用最新的基于 HTML5 的版本。 NET Wed Forms 项目。
我的环境如下:
带有 Windows 7 和 SQL Server 2014 包括 SSRS 的开发笔记本电脑。
带有 2008R2、2014 和 2016 Reporting Services 的各种远程服务器。
我已按照 Microsoft 文档中的教程页面进行操作:
https://docs.microsoft.com/en-us/sql/reporting-services/application-integration/using-the-webforms-reportviewer-control,并设置了指向远程服务器报告的页面。
代码隐藏:
protected void Page_Init(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
rv14.ProcessingMode = ProcessingMode.Remote;
ServerReport serverReport = rv14.ServerReport;
// A 2016 Report
serverReport.ReportServerUrl = new Uri("http://2016server/reportserver");
serverReport.ReportPath = "/Sports";
// A 2014 Report
// serverReport.ReportServerUrl = new Uri("http://2014server/reportserver");
// serverReport.ReportPath = "/SQL2014DemoReports/VertBar";
// A 2008R2 Report
// serverReport.ReportServerUrl = new Uri("http://2008R2server/Reportserver");
// serverReport.ReportPath = "/DemoReports/VertBar";
}
}
ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Reports.aspx.cs" Inherits="WebNew.Reports" %>
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=14.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>Reports</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="rv14" runat="server" Width="100%" Height="100%"></rsweb:ReportViewer>
</form>
</body>
</html>
当我 运行 页面时,新的基于 HTML 的工具栏呈现,我得到 "loading" 迷你对话框显示,但随后什么也没有。没有呈现报告正文。目前在代码中未注释的报告是几页长的简单体育列表,没有什么复杂的。
我可以看出服务器已联系并回复,因为我看到分页控件指示有多个页面,如果我随后使用任何导出控件,例如 PDF,PDF 确实有其中包含正确的渲染输出。
它根本没有显示在我的网页中。
我试过 IE (11)、Chrome (58) 和 Firefox (49),它们都显示相同的行为。无论我定位哪个服务器或者我是否连接到我的本地实例都没有关系。
有没有人看到过这种行为,对可能发生的事情有任何指示,或者尝试调试的好方法?
非常感谢
好的,所以我偶然发现了我所看到的解决方案。看来问题与查看器包含在其中的内容有关。
如果我将查看器包裹在 DIV 中并将其高度设置为 100 垂直高度,则查看器会正确显示其内容。以前它必须有效地在高度为零的容器中。
有效的 ASPX 代码如下所示:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>2016 Report Viewer Test</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div style="height:100vh">
<rsweb:ReportViewer
ID="rv14"
runat="server"
Width="100%"
Height="100%">
</rsweb:ReportViewer>
</div>
</form>
</body>
</html>
希望有一天这对某人有所帮助。 :-)
添加这个,对我有用。
rv14.SizeToReportContent = true;
我希望有人知道我正在经历什么。
多年来,我一直在使用各种版本的 Report Viewer 控件(包括 WinForms 和 Web),并且刚刚开始尝试在 ASP 中使用最新的基于 HTML5 的版本。 NET Wed Forms 项目。
我的环境如下: 带有 Windows 7 和 SQL Server 2014 包括 SSRS 的开发笔记本电脑。 带有 2008R2、2014 和 2016 Reporting Services 的各种远程服务器。
我已按照 Microsoft 文档中的教程页面进行操作: https://docs.microsoft.com/en-us/sql/reporting-services/application-integration/using-the-webforms-reportviewer-control,并设置了指向远程服务器报告的页面。
代码隐藏:
protected void Page_Init(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
rv14.ProcessingMode = ProcessingMode.Remote;
ServerReport serverReport = rv14.ServerReport;
// A 2016 Report
serverReport.ReportServerUrl = new Uri("http://2016server/reportserver");
serverReport.ReportPath = "/Sports";
// A 2014 Report
// serverReport.ReportServerUrl = new Uri("http://2014server/reportserver");
// serverReport.ReportPath = "/SQL2014DemoReports/VertBar";
// A 2008R2 Report
// serverReport.ReportServerUrl = new Uri("http://2008R2server/Reportserver");
// serverReport.ReportPath = "/DemoReports/VertBar";
}
}
ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Reports.aspx.cs" Inherits="WebNew.Reports" %>
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=14.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>Reports</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="rv14" runat="server" Width="100%" Height="100%"></rsweb:ReportViewer>
</form>
</body>
</html>
当我 运行 页面时,新的基于 HTML 的工具栏呈现,我得到 "loading" 迷你对话框显示,但随后什么也没有。没有呈现报告正文。目前在代码中未注释的报告是几页长的简单体育列表,没有什么复杂的。
我可以看出服务器已联系并回复,因为我看到分页控件指示有多个页面,如果我随后使用任何导出控件,例如 PDF,PDF 确实有其中包含正确的渲染输出。
它根本没有显示在我的网页中。
我试过 IE (11)、Chrome (58) 和 Firefox (49),它们都显示相同的行为。无论我定位哪个服务器或者我是否连接到我的本地实例都没有关系。
有没有人看到过这种行为,对可能发生的事情有任何指示,或者尝试调试的好方法?
非常感谢
好的,所以我偶然发现了我所看到的解决方案。看来问题与查看器包含在其中的内容有关。
如果我将查看器包裹在 DIV 中并将其高度设置为 100 垂直高度,则查看器会正确显示其内容。以前它必须有效地在高度为零的容器中。
有效的 ASPX 代码如下所示:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>2016 Report Viewer Test</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div style="height:100vh">
<rsweb:ReportViewer
ID="rv14"
runat="server"
Width="100%"
Height="100%">
</rsweb:ReportViewer>
</div>
</form>
</body>
</html>
希望有一天这对某人有所帮助。 :-)
添加这个,对我有用。
rv14.SizeToReportContent = true;