2011-06-07 103 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,並添加處理程序。