Overview: I am using Reporting Q1 2012 and Visual Studio 2010. I have built a very simple aspx page which contains the Q1 2012 Report Viewer control. In the code behind, I am binding the ReportViewer.Report to a deserialized instance of a .trdx file that was created using the Q1 2012 Report Designer. I have SQL Server Express 2008 R2 as the data source for the SQLDataSource defined in the report.
Problem: When I view the report (.trdx) in the Report Preview of the Report Designer, the expected data populates correctly. When I run the web application and attempts to view the report using the ReportViewer control a blank page is displayed after the "Generating Report.." message disappears. Print Preview mode of the ReportViewer yields the same results. Printing and exporting to any format generates a single blank page.
Details:
viewer.aspx.cs
Problem: When I view the report (.trdx) in the Report Preview of the Report Designer, the expected data populates correctly. When I run the web application and attempts to view the report using the ReportViewer control a blank page is displayed after the "Generating Report.." message disappears. Print Preview mode of the ReportViewer yields the same results. Printing and exporting to any format generates a single blank page.
Details:
- I have followed the official documentation for deserializing the report file and binding it to the viewer.
- The report has no parameters and is a simple "Select * From [Table]" select command.
- The [Table] has only three columns.
- The SQLDataSource connection string is NOT being stored in a configuration setting.
- I have stepped through the code line by line to verify that the deserialized Report object connection strings are pointing at the correct server and database with appropriate access.
Code:
viewer.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="viewer.aspx.cs" Inherits="Panda.Web.App.Reports.Repository.Viewer" %><%@ Register Assembly="Telerik.ReportViewer.WebForms, Version=6.0.12.215, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" Namespace="Telerik.ReportViewer.WebForms" TagPrefix="telerik" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <link type="text/css" rel="stylesheet" href="~/Styles/reset.css" /> <style type="text/css"> html#html, body#body, form#form1, div#content { height: 100%; } </style></head><body id="body"> <form id="form1" runat="server"> <div id="content"> <telerik:reportviewer Id="ReportViewer1" runat="server" Width="100%" Height="790px" ShowDocumentMapButton="False" ShowHistoryButtons="False" ShowPrintPreviewButton="False" Skin="WebBlue" ViewMode="PrintPreview" ZoomPercent="50"></telerik:reportviewer> </div> </form></body></html>viewer.aspx.cs
var reportDefinitionFile = Server.MapPath("~/app/reports/repository/rpt/" + _reportPath);using (System.Xml.XmlReader xmlReader = System.Xml.XmlReader.Create(reportDefinitionFile)){ System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(Telerik.Reporting.Report)); Telerik.Reporting.Report reportDocument = (Telerik.Reporting.Report)xmlSerializer.Deserialize(xmlReader); var conn = WebConfigurationManager.ConnectionStrings["Panda.Data.ConnectionString"]; if (conn == null) { conn = WebConfigurationManager.ConnectionStrings["Panda.Data." + Environment.MachineName + ".ConnectionString"]; } var connString = conn.ConnectionString; // Set Report datasource connections for report, parameters and all other objects var sds = (Telerik.Reporting.SqlDataSource)reportDocument.DataSource; sds.ConnectionString = connString; // parameters foreach (var obj in reportDocument.ReportParameters) { if (obj.AvailableValues.DataSource != null) { var ds = (Telerik.Reporting.SqlDataSource)obj.AvailableValues.DataSource; ds.ConnectionString = connString; } } ////// other report objects //SetConnectionStrings(reportDocument.Items, connString); ReportViewer1.Report = reportDocument; ReportViewer1.DataBind(); ReportViewer1.RefreshReport();}
Settings.trdx
<?xml version="1.0" encoding="utf-8"?>
<Report Width="10.45833333in" DocumentName="Panda Settings|List of global properties" Name="Settings">
<DataSources>
<SqlDataSource ConnectionString="Server=***\***;Database=***;uid=***;pwd=****;" SelectCommand="Select * from PandaSetting" Name="Panda" />
</DataSources>
<PageSettings PaperKind="Letter" Landscape="True">
<Margins Left="0.25in" Right="0.25in" Top="0.25in" Bottom="0.25in" />
</PageSettings>
<DataSourceRef>Panda</DataSourceRef>
<StyleSheet>
<StyleRule>
<Style BackgroundColor="" Color="28, 58, 112">
<Font Name="Tahoma" Size="18pt" Style="Regular" />
</Style>
<Selectors>
<StyleSelector>
<Type>ReportItemBase</Type>
<StyleName>Title</StyleName>
</StyleSelector>
</Selectors>
</StyleRule>
<StyleRule>
<Style BackgroundColor="28, 58, 112" Color="White" VerticalAlign="Middle">
<Font Name="Tahoma" Size="11pt" Style="Bold" />
</Style>
<Selectors>
<StyleSelector>
<Type>ReportItemBase</Type>
<StyleName>Caption</StyleName>
</StyleSelector>
</Selectors>
</StyleRule>
<StyleRule>
<Style Color="Black" VerticalAlign="Middle">
<Font Name="Tahoma" Size="10pt" Style="Regular" />
</Style>
<Selectors>
<StyleSelector>
<Type>ReportItemBase</Type>
<StyleName>Data</StyleName>
</StyleSelector>
</Selectors>
</StyleRule>
<StyleRule>
<Style Color="Black" VerticalAlign="Middle">
<Font Name="Tahoma" Size="8pt" Style="Regular" />
</Style>
<Selectors>
<StyleSelector>
<Type>ReportItemBase</Type>
<StyleName>PageInfo</StyleName>
</StyleSelector>
</Selectors>
</StyleRule>
</StyleSheet>
<Groups>
<Group Name="labelsGroup">
<GroupHeader>
<GroupHeaderSection PrintOnEveryPage="True" Height="0.28125in" Name="labelsGroupHeader">
<Items>
<TextBox Value="name" CanGrow="True" Left="0.02083333in" Top="0.02083333in" Width="5.19791667in" Height="0.20000001in" Name="nameCaptionTextBox" StyleName="Caption" />
<TextBox Value="description" Angle="0" CanGrow="True" Left="5.23958333in" Top="0.02083333in" Width="4.46041679in" Height="0.20000001in" Name="descriptionCaptionTextBox" StyleName="Caption" />
</Items>
</GroupHeaderSection>
</GroupHeader>
<GroupFooter>
<GroupFooterSection Height="0.28125in" Name="labelsGroupFooter">
<Style Visible="False" />
</GroupFooterSection>
</GroupFooter>
</Group>
</Groups>
<Items>
<PageHeaderSection Height="0.28125in" Name="pageHeader">
<Style>
<BorderStyle Default="Solid" />
</Style>
</PageHeaderSection>
<PageFooterSection Height="0.28125in" Name="pageFooter">
<Items>
<TextBox Value="=NOW()" Left="0.02083333in" Top="0.02083333in" Width="5.19791667in" Height="0.20000001in" Name="currentTimeTextBox" StyleName="PageInfo" />
<TextBox Value="=PageNumber" Left="5.23958333in" Top="0.02083333in" Width="5.19791667in" Height="0.20000001in" Name="pageInfoTextBox" StyleName="PageInfo">
<Style TextAlign="Right" />
</TextBox>
</Items>
</PageFooterSection>
<ReportHeaderSection Height="0.80823493in" Name="reportHeader">
<Items>
<TextBox Value="Panda Settings" Left="0in" Top="0in" Width="10.45833333in" Height="0.7874016in" Name="titleTextBox" StyleName="Title" />
</Items>
</ReportHeaderSection>
<ReportFooterSection Height="0.28125in" Name="reportFooter" />
<DetailSection Height="0.28125in" Name="detail">
<Items>
<TextBox Value="=Fields.name" CanGrow="True" Left="0.02083333in" Top="0.02083333in" Width="5.19791667in" Height="0.20000001in" Name="nameDataTextBox" StyleName="Data" />
<TextBox Value="=Fields.description" Angle="0" CanGrow="True" Left="5.23958333in" Top="0.02083333in" Width="4.46041679in" Height="0.20000001in" Name="descriptionDataTextBox" StyleName="Data" />
</Items>
</DetailSection>
</Items>
</Report>
Where am I going wrong?