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

发布于 2024-12-04 15:40:15 字数 458 浏览 1 评论 0原文

将报表参数传递到 VS 2010 RDLC 中的子报表

我在定义报表参数并将其传递到 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 的参数。

Passing Report Parameters to SubReport in VS 2010 RDLC

I'm having some troubles defining and passing report parameters to subreports in VS 2010. In VS 2008 in the design view I was able to right click and define the report parameter and have it passed through.

In VS 2010 that prompt is missing. So my question is, how can I pass a value from a parent report to a subreport in VS 2010?

Additionally, this is what is shown in the Report Properties dialog inside of VS 2010:

For the time being I have defined the parameter in the subreport manually in the XML but I'm receiving an error from the main report when I attempt to pass a parameter of any type to the subreport.

The error is :

An error occurred during local report processing.

Value cannot be null. Parameter name: value

Where I do not have a parameter named value defined anywhere.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只有影子陪我不离不弃 2024-12-11 15:40:15
  • 转到子报表 -> 报告数据窗格 -> 参数并添加您想要接收的参数。

  • 转到主报告 -> 右键单击子报表 -> 子报表属性 -> 参数并添加相同的参数名称并从下拉列表中选择相关值。

  • 处理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<Order>)mainSource.Value).Single(o => o.OrderID == orderId).Suppliers;
    e.DataSources.Add(new ReportDataSource("SubDataSet1", subSource));
}
  • Goto SubReport -> Report Data Pane -> Parameters and add the parameter you want to receive.

  • Goto MainReport -> Right-click SubReport -> Subreport Properties -> Parameters and add the same paramter name and pick the relevant value from the dropdown.

  • Handle the SubreportProcessing event and set the datasource for the subreport. In my case the main report datasource was of type List<Order> and the parameter was OrderID. Sample code below.

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));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文