Visual Studio 2010,本地 SSRS 报告查看器 14,预览为空,但导出和打印工作正常
Visual Studio 2010, Local SSRS Report Viewer 14, Preview is empty, but Export and Print work fine
报表查看器预览 显示为空,但导出和打印工作正常。
我对此束手无策。我需要对现有的 SSRS 报告进行更改,虽然所有部分似乎都在完成它们的工作,但最终结果是一个空报告,即使报告查看器正在为报告获取正确的数据。 (脚注:该报告名为 "ByGroup",但我正在将其部分更改为 "ByFields" 以确保现有报告仍可独立运行。这可能是某些问题的原因,但我尽量小心避免这种情况。)
该项目使用在网站 App_Code 文件夹中的单独 .xsd 文件中声明的数据 Table。数据table调用存储过程,列都存在,Fill和GetData方法就位。使用数据 Table "Preview Data" 选项,我们可以验证数据 Table 是否正确,并且 return 是正确的数据。如果相关,我们可以为此提供更多数据。
我们报表的 .aspx 文件具有正确的 Report Viewer 14 注册标签:
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
我们正在使用链接到 Table 适配器定义的 ObjectDataSource:
<asp:ObjectDataSource ID="EventListingByGroup_DataInstance" runat="server"
OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
TypeName="AEMSReports.dsAEMSReportsTableAdapters.AEMSReports_056_EventListingByFieldsTableAdapter">
<SelectParameters>
元素准确地声明了所有用于存储过程的参数。
报表查看器定义如下:
<rsweb:ReportViewer ID="rvEventListingByGroup" runat="server" Font-Names="Verdana"
Font-Size="8pt" Height="100%" Width="850px" AsyncRendering="False"
ClientIDMode="AutoID" InternalBorderColor="204, 204, 204" InternalBorderStyle="Solid"
InternalBorderWidth="1px" ToolBarItemBorderStyle="Solid" ToolBarItemBorderWidth="1px"
ToolBarItemPressedBorderColor="51, 102, 153" ToolBarItemPressedBorderStyle="Solid" ToolBarItemPressedBorderWidth="1px"
ToolBarItemPressedHoverBackColor="153, 187, 226" >
<LocalReport ReportPath="reports\Counts_Listings\EventListingByFields056.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="EventListingByGroup_DataInstance" Name="dsAEMSReports_AEMSReports_056_EventListingByFields" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer>
在.aspx.cs Page_Load例程中,我们有这样的代码:
if (!IsPostBack)
{
// Set hidden fields on the form for the Select parameters...
tbFromDate.Text = Request.Form["txtFromDate"].Trim();
// ...clip...
rvEventListingByGroup.Attributes.Add("style", "margin-bottom: 30px;");
rvEventListingByGroup.Visible = true;
string[] path = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
string reportPath = "";
int length = path.Length;
for (int i = 1; i < length - 1; i++)
{
if (path[i] == "Reports")
{
for (int j = i; j < length - 1; j++)
{
reportPath += path[j] + "/";
}
}
}
rvEventListingByGroup.LocalReport.ReportPath = reportPath + "EventListingByGroup056.rdlc";
rvEventListingByGroup.LocalReport.Refresh();
}
我们报告的 .rdlc 如下所示:
结果输出如下所示:
我已使用 SQL Server Profiler 验证,当报表查看器加载页面时,它会使用正确的参数调用 SQL 服务器以 [=50=] 所有必要的数据,但数据未呈现在页面上。我知道没有页脚,也没有任何设置来管理分页,所以在我修复它之前它总是读取“1 of 1”,但我期望的是(在我们的测试用例中)150 行的长页原始数据的价值。
任何人都可以就我可能错过的内容提供建议吗?
在此先感谢您。我们认为这将是一个简单的更改,但自从我们的报告撰写人(工作人员)离开后,我们就无法在没有必要技能支持的情况下快速完成这些更改...
感谢 this link from social.msdn,我找到了答案。我在 .aspx 文件中的 ReportViewer 声明中添加了 SizeToReportContent="true"
,并且输出现在在预览器中正确呈现。没有它,没有内容呈现,之后,它就在那里!
报表查看器预览 显示为空,但导出和打印工作正常。
我对此束手无策。我需要对现有的 SSRS 报告进行更改,虽然所有部分似乎都在完成它们的工作,但最终结果是一个空报告,即使报告查看器正在为报告获取正确的数据。 (脚注:该报告名为 "ByGroup",但我正在将其部分更改为 "ByFields" 以确保现有报告仍可独立运行。这可能是某些问题的原因,但我尽量小心避免这种情况。)
该项目使用在网站 App_Code 文件夹中的单独 .xsd 文件中声明的数据 Table。数据table调用存储过程,列都存在,Fill和GetData方法就位。使用数据 Table "Preview Data" 选项,我们可以验证数据 Table 是否正确,并且 return 是正确的数据。如果相关,我们可以为此提供更多数据。
我们报表的 .aspx 文件具有正确的 Report Viewer 14 注册标签:
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
我们正在使用链接到 Table 适配器定义的 ObjectDataSource:
<asp:ObjectDataSource ID="EventListingByGroup_DataInstance" runat="server"
OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
TypeName="AEMSReports.dsAEMSReportsTableAdapters.AEMSReports_056_EventListingByFieldsTableAdapter">
<SelectParameters>
元素准确地声明了所有用于存储过程的参数。
报表查看器定义如下:
<rsweb:ReportViewer ID="rvEventListingByGroup" runat="server" Font-Names="Verdana"
Font-Size="8pt" Height="100%" Width="850px" AsyncRendering="False"
ClientIDMode="AutoID" InternalBorderColor="204, 204, 204" InternalBorderStyle="Solid"
InternalBorderWidth="1px" ToolBarItemBorderStyle="Solid" ToolBarItemBorderWidth="1px"
ToolBarItemPressedBorderColor="51, 102, 153" ToolBarItemPressedBorderStyle="Solid" ToolBarItemPressedBorderWidth="1px"
ToolBarItemPressedHoverBackColor="153, 187, 226" >
<LocalReport ReportPath="reports\Counts_Listings\EventListingByFields056.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="EventListingByGroup_DataInstance" Name="dsAEMSReports_AEMSReports_056_EventListingByFields" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer>
在.aspx.cs Page_Load例程中,我们有这样的代码:
if (!IsPostBack)
{
// Set hidden fields on the form for the Select parameters...
tbFromDate.Text = Request.Form["txtFromDate"].Trim();
// ...clip...
rvEventListingByGroup.Attributes.Add("style", "margin-bottom: 30px;");
rvEventListingByGroup.Visible = true;
string[] path = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
string reportPath = "";
int length = path.Length;
for (int i = 1; i < length - 1; i++)
{
if (path[i] == "Reports")
{
for (int j = i; j < length - 1; j++)
{
reportPath += path[j] + "/";
}
}
}
rvEventListingByGroup.LocalReport.ReportPath = reportPath + "EventListingByGroup056.rdlc";
rvEventListingByGroup.LocalReport.Refresh();
}
我们报告的 .rdlc 如下所示:
我已使用 SQL Server Profiler 验证,当报表查看器加载页面时,它会使用正确的参数调用 SQL 服务器以 [=50=] 所有必要的数据,但数据未呈现在页面上。我知道没有页脚,也没有任何设置来管理分页,所以在我修复它之前它总是读取“1 of 1”,但我期望的是(在我们的测试用例中)150 行的长页原始数据的价值。
任何人都可以就我可能错过的内容提供建议吗?
在此先感谢您。我们认为这将是一个简单的更改,但自从我们的报告撰写人(工作人员)离开后,我们就无法在没有必要技能支持的情况下快速完成这些更改...
感谢 this link from social.msdn,我找到了答案。我在 .aspx 文件中的 ReportViewer 声明中添加了 SizeToReportContent="true"
,并且输出现在在预览器中正确呈现。没有它,没有内容呈现,之后,它就在那里!