在VS 2010 RDLC中将报表参数传递给SubReport

在VS 2010 RDLC中将报表参数传递给SubReport

我在VS 2010中定义并将报告参数传递给子报告时遇到了一些麻烦。在VS 2008的设计视图中,我能够右键单击并定义报告参数并将其传递给我。

在VS 2010中,缺少提示。 所以我的问题是,如何将父报表中的值传递给VS 2010中的子报表?

此外,这是VS 2010内部的“报告属性”对话框中显示的内容:

暂时我在XML中手动定义了子报表中的参数,但是当我尝试将任何类型的参数传递给子报表时,我从主报表中收到错误。

错误是:

An error occurred during local report processing. Value cannot be null. Parameter name: value 

我没有在任何地方定义一个名为value的参数。

  • 转到子报表 – > 报表数据窗格 – > 参数并添加要接收的参数。

  • 转到MainReport – > 右键单击SubReport – > Subreport Properties – > Parameters并添加相同的参数名称,然后从下拉列表中选择相关值。

  • 处理SubreportProcessing事件并设置子报表的数据源。 在我的例子中,主报告数据源是List类型,参数是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)mainSource.Value).Single(o => o.OrderID == orderId).Suppliers; e.DataSources.Add(new ReportDataSource("SubDataSet1", subSource)); } 

var subSource =((List)mainSource.Value).Single(o => o.OrderID == orderId)。供应商;

什么意思