title: .RDLC Report 2008 (in VS 2010) ReportViewer appears with no report or data
body: <p>Working with .RDLC 2005 in VS 2008 this technique worked very well, now in <strong>.RDLC 2008 as implemented in VS 2010</strong> I get a blank (or no?) report.</p>
  
  <p>I have made a couple of changes to accommodate .RDLC 2008 and at this time I am getting no exceptions. The present (not desired) output looks like:
  <img src="https://i.stack.imgur.com/Pk1Jp.png" alt="enter image description here"></p>
  
  <p>I have a custom ReportController class that has a public method to ShowReport (also one to manage the exporting of reports, but that is not (yet) in play.) </p>
  
  <p>From the asp.net page I invoke the controller in the property set (of Type DataSet, invoked by the page controller) like: (<em>ReportController implements IDisposable</em>)</p>
  
  <pre><code>try
  {
      using (var reportController = new ReportController(true))
      {
           _ReportViewer = reportController.ShowReport("DemonstrationList", value, phReportHolder);
  
           if (_ReportViewer != null)
           {
               _ReportViewer.ShowRefreshButton = false;
               _ReportViewer.ShowPrintButton = false;
               _ReportViewer.Width = Unit.Pixel(700);// Unit.Percentage(99);
               _ReportViewer.Height = Unit.Pixel(700);// Unit.Percentage(90);
           }
      }
  
      lblRecordCount.InnerText = value.Tables[0].Rows.Count.ToString();
  }
  catch (Exception ex)
  {
      phReportHolder.InnerHtml = string.Format("There was an error attempting to process this report &lt;br/&gt;&lt;br/&gt;&lt;div style='color:White;'&gt;{0}&lt;/div&gt;", ex.Message);
  }
  </code></pre>
  
  <p>and the <code>ShowReport</code> method is:</p>
  
  <pre><code>public ReportViewer ShowReport(string ReportName, DataSet ds, HtmlContainerControl ReportContainer)
  {
      ReportContainer.Controls.Clear();
      ReportViewer reportViewer = BuildReport(ReportName, ds);
      ReportContainer.Controls.Add(reportViewer);
      return reportViewer;
  }
  </code></pre>
  
  <p>This allows me to tell the controller to put any 'valid' report into any htmlcontainercontrol using any provided dataset.</p>
  
  <p>BuildReport takes the data and the report name and builds the report as:</p>
  
  <pre><code>private ReportViewer BuildReport(string ReportName, DataSet ds)
  {
        try
        {
           _activeDS = ds;
           string ReportFileName = ResolveRDLCName(ReportName);
               // ResolveRDLCName is used along with path strings 
               // initialized from configuration settings in the 
               // constructor to make this portable. 
           var viewer = new ReportViewer();
           viewer.ProcessingMode = ProcessingMode.Local;
           viewer.LocalReport.ReportPath = ReportFileName;
           viewer.LocalReport.DisplayName = ReportName;
           viewer.LocalReport.EnableHyperlinks = true;
           AssignReportData(ds, viewer.LocalReport);
  
          return viewer;
        }
        //...Exception handlers below are not invoked at this time
  </code></pre>
  
  <p>And 'AssignReportData' attaches the data to the report.</p>
  
  <pre><code>private static void AssignReportData(DataSet ds,  LocalReport Report)
  {
           var listOfDatasources = Report.GetDataSourceNames();
  
           foreach (string dsn in listOfDatasources)
           {
              ReportDataSource rds = new ReportDataSource(dsn,ds.Tables[dsn]);
              Report.DataSources.Add(rds);
           }
  }
  </code></pre>
  
  <p><em>Development techniques ensure that dataTable/dataSource names stay in agreement (and if they were not I would get a specific exception, which I do not.)</em></p>