在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的参数。
答案 0 :(得分:16)
转到子报告 - > 报告数据窗格 - > 参数并添加您要接收的参数。
转到 MainReport - > 右键单击SubReport - > 子报告属性 - > 参数并添加相同的参数名称,并从下拉列表中选择相关值。
处理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 :(得分:0)
var subSource =((List)mainSource.Value).Single(o =&gt; o.OrderID == orderId)。供应商;
意思是什么