2011-06-07 117 views
1

在VS 2008与2005年.RDLC工作这项技术在2008年.RDLC工作非常出色,现在在VS 2010中实现我得到了一个空白(或否?)报告。.RDLC报告2008(2010年VS)的ReportViewer好像没有任何报告或数据

我已经做了一些修改以适应.RDLC 2008,此时我没有得到任何例外。本(不希望)输出如下:(也是一个管理的报告的出口,但是这(还)没有在场上) enter image description here

我有一个公共的方法来ShowReport定制ReportController类

从asp.net页I调用在属性集的控制器(类型的数据集,由页控制器调用)像:(ReportController实现IDisposable

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 <br/><br/><div style='color:White;'>{0}</div>", ex.Message); 
} 

ShowReport方法是:

public ReportViewer ShowReport(string ReportName, DataSet ds, HtmlContainerControl ReportContainer) 
{ 
    ReportContainer.Controls.Clear(); 
    ReportViewer reportViewer = BuildReport(ReportName, ds); 
    ReportContainer.Controls.Add(reportViewer); 
    return reportViewer; 
} 

这让我来告诉控制器使用任何提供的数据集把任何“有效”报告到任何htmlcontainercontrol。

BuildReport需要的数据和报表名称并建立报告:

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 

和“AssignReportData”的数据附加到报告。

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); 
     } 
} 

发展的技术保证的dataTable /数据源名称保持一致(如果他们没有,我会得到一个特定的异常,这我不知道。)

回答

1

这似乎是报告内容得到呈现,但根本不可见。

尝试看看生成的HTML(DOM)与

  • 铬:在报表区域单击鼠标右键,“检查元素”探索DOM
  • IE浏览器:安装IE Developer Toolbar探索DOM

也许一些曾经工作过的CSS现在隐藏了您的报告区域。

+0

已经做到了。工具栏是渲染,报告内容不是。 – 2011-06-16 15:26:52

+0

@Cos您是否在绘制之前检查了'viewer.ShowReportBody'设置为false? – oleschri 2011-06-16 15:46:04

+0

@Cos你可能也会在渲染后看看'viewer.ReportAreaContentType'的值 – oleschri 2011-06-16 15:48:58

2

我有类似的问题,这blog post回答。简短的回答是我需要安装报告查看器redistributable,并添加处理程序。