2012-07-20 91 views
0

我有一個(rdlc)報告,其中包含一個表內的子報表。對於生成的子報表的每個實例,將觸發LocalReport.SubreportProcessing事件,該事件位於agreement with the documentation中。LocalReport.SubReportProcessing事件忽略後續數據表

但是,對於這些事件中的每一個,看起來只有分配的第一個DataTable在報告內使用。我可以驗證ReportFactory.ReturnNextDataTable正在爲每一行返回適當的DataTable,但是看起來DataTable的第一個實例正在重複多次。

我已經嘗試清除每次調用的報表數據源(使用e.DataSources.Clear()),但這沒有什麼區別。

這裏是我的代碼:

void AddData(object sender, SubreportProcessingEventArgs e) 
     { 
      DataTable merged = ReportFactory.ReturnNextDataTable; 
      e.DataSources.Add(new ReportDataSource("RATES", merged)); //Subsequent DataTables ignored  
     } 

我不禁感慨,我要對此根本上走錯了路。有任何想法嗎?

回答

0

在延續斯特凡克拉麗絲的答案這裏是從源頭上提取

一些閒逛,並與我的代碼修修補補之後,我發現了一個解決方法。解決方案是在子報表中創建一個虛擬參數,然後您需要綁定到tablix數據集中的字段。只要subreport參數和tablix數據集字段都是類型兼容的,任何字段都會執行。您不必對子報表中的參數執行任何操作,但現在SSRS會顯示同一子報表的多個實例,對於Tablix中的每一行,都會單獨顯示一個實例。

這似乎是SSRS中的一個錯誤,解決方法是創建一個具有從主報告傳遞的任何數據類型的虛擬參數。這裏是如何解決這個問題對我來說

我在報表 dummy parameter

在主報告中增加了一個虛擬參數,我剛剛通過的任何領域,隨着虛擬參數的數據類型相匹配的虛擬參數。在我而言,它是整數(EVENTID)

main report properties