Visual Studio 2010,本地SSRS报表查看器14,预览为空,但导出和打印工作正常

时间:2017-09-01 22:38:55

标签: asp.net sql-server visual-studio-2010 reporting-services ssrs-tablix

报告查看器预览显示为空,但导出和打印工作正常。

我只是在我的智慧结束。我需要对现有的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();
}

我们的报告.rdlc看起来像这样: Our report's .rdlc looks like this 结果输出如下所示: the resulting output looks like this

我已经使用SQL Server Profiler验证,当Report Viewer加载页面时,它使用正确的参数调用SQL Server以返回所有必需的数据,但数据未在页面上呈现。我知道没有页脚,也没有任何设置来管理分页,所以它总是会读取“1 of 1”直到我修复它,但我期待的是(在我们的测试用例中)150行的长页值得的原始数据。

有人可以提供关于我可能错过的建议吗?

提前非常感谢你。我们认为这将是一个简单的改变,但是自从我们的报告撰稿人(工作人员)离开后,我们就在短时间内完成这些修改,而没有必要的技能来支持它......

1 个答案:

答案 0 :(得分:0)

我找到了答案,感谢this link from social.msdn。我在.aspx文件中将SizeToReportContent="true"添加到了ReportViewer声明中,现在在预览器中正确呈现了输出。没有它,没有内容呈现,之后,它就在那里!