2011-09-12 80 views
5

傳遞報表參數在VS 2010中以報表RDLC傳遞報表參數在VS 2010中以報表RDLC

我在定義和設計視圖我在VS 2008的VS 2010傳遞報表參數子報表一些麻煩能夠右鍵單擊並定義報告參數並讓它通過。

在VS 2010中,提示缺失。所以我的問題是,我如何將父報告中的值傳遞給VS 2010中的子報表?

此外,這是在報告屬性對話框內VS 2010的顯示:

暫且我在XML手動定義的報表參數,但我收到來自一個錯誤主要報告,當我試圖傳遞任何類型的參數到子報表。

的錯誤是:

An error occurred during local report processing. 

Value cannot be null. Parameter name: value 

如果我沒有在任何地方定義的參數命名值。

回答

13
  • 轉到子報表 - >報告數據窗格 - >參數,並添加要接收的參數。

  • 轉到MainReport - >右鍵單擊子報表 - >子報表屬性 - >參數,並添加相同放慢參數名稱並選擇從下拉列表中相應的數值。

  • 處理SubreportProcessing事件並設置子報表的數據源。在我的情況下,主報告數據源的類型爲List<Order>,參數爲OrderID。下面的示例代碼。

ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SetSubDataSource); 
public void SetSubDataSource(object sender, SubreportProcessingEventArgs e) 
{ 
    var mainSource = ((LocalReport) sender).DataSources["MainDataSet1"]; 
    var orderId = int.Parse(e.Parameters["OrderID"].Values.First()); 
    var subSource = ((List<Order>)mainSource.Value).Single(o => o.OrderID == orderId).Suppliers; 
    e.DataSources.Add(new ReportDataSource("SubDataSet1", subSource)); 
} 
+1

**非常重要**在'e.DataSources.Add'方法'ReportDataSource'的名稱必須與數據源的報表中的名稱相匹配。 – 2016-06-02 12:14:06

+0

另一種定義這樣的子源使用這個標籤: 這將做同樣的事情,併爲您節省這3行代碼。 –

0

VAR副信號源=((列表)mainSource.Value)。單(O => o.OrderID ==訂單ID).Suppliers;

什麼意思

相關問題