报告查看器预览显示为空,但导出和打印工作正常。
我只是在我的智慧结束。我需要对现有的SSRS报告进行更改,虽然所有部分似乎都在完成其工作,但最终结果是一个空报告,即使报告查看器正在为报告提取正确的数据。 (脚注:该报告被称为“ByGroup”,但我正在将其中的部分更改为“ByFields”,以确保现有报告仍然可以自行运行。这可能是某些问题的原因,但我'我试图小心避免这种情况。)
该项目使用在网站的App_Code文件夹中保存的单独.xsd文件中声明的数据表。数据表调用存储过程,列都存在,并且Fill和GetData方法就位。使用数据表“预览数据”选项,我们可以验证数据表是否正确,并返回正确的数据。如果相关,我们可以为此提供更多数据。
我们的报告的.aspx文件具有报告查看器14的正确注册标记:
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
我们正在使用链接到TableAdapter定义的ObjectDataSource:
<asp:ObjectDataSource ID="EventListingByGroup_DataInstance" runat="server"
OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
TypeName="AEMSReports.dsAEMSReportsTableAdapters.AEMSReports_056_EventListingByFieldsTableAdapter">
<SelectParameters>
元素准确地声明了为存储过程提供的所有参数。
ReportViewer的定义如下:
<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();
}
我已经使用SQL Server Profiler验证,当Report Viewer加载页面时,它使用正确的参数调用SQL Server以返回所有必需的数据,但数据未在页面上呈现。我知道没有页脚,也没有任何设置来管理分页,所以它总是会读取“1 of 1”直到我修复它,但我期待的是(在我们的测试用例中)150行的长页值得的原始数据。
有人可以提供关于我可能错过的建议吗?
提前非常感谢你。我们认为这将是一个简单的改变,但是自从我们的报告撰稿人(工作人员)离开后,我们就在短时间内完成这些修改,而没有必要的技能来支持它......
答案 0 :(得分:0)
我找到了答案,感谢this link from social.msdn。我在.aspx文件中将SizeToReportContent="true"
添加到了ReportViewer声明中,现在在预览器中正确呈现了输出。没有它,没有内容呈现,之后,它就在那里!