Asp.net 将参数传递到VS 2010下RDLC中的子报告

Asp.net 将参数传递到VS 2010下RDLC中的子报告,asp.net,visual-studio-2010,reportviewer,rdlc,Asp.net,Visual Studio 2010,Reportviewer,Rdlc,目前,我正在VS2010中使用ASP.NET4.0和2010 RDLC设计器开发一个报告网站。我正在构建的报告类似于主详细信息报告,但我尝试使用嵌套表来实现它 我的问题是,我试图将字段值从主报表传递到子报表。表格设置如下所示: ------------------- | Name | Date | ------------------------------------ | Description1 | DueDate | ----------------------

目前,我正在VS2010中使用ASP.NET4.0和2010 RDLC设计器开发一个报告网站。我正在构建的报告类似于主详细信息报告,但我尝试使用嵌套表来实现它

我的问题是,我试图将字段值从主报表传递到子报表。表格设置如下所示:

-------------------
|  Name  |  Date  |
------------------------------------
   |  Description1 |  DueDate      |
------------------------------------
   |  Description2 |  DueDate      |
------------------------------------
| Name2 | Date2 |
-----------------
2张桌子

第一个表:[记录ID、名称、日期,] 第二个表:[记录ID、说明、截止日期]

我想做的是这样一张桌子:

-------------------
|  Name  |  Date  |
------------------------------------
   |  Description1 |  DueDate      |
------------------------------------
   |  Description2 |  DueDate      |
------------------------------------
| Name2 | Date2 |
-----------------
包含子报告中描述和截止日期部分的条目

当我试图将RecordID作为参数传递给子报表时,我必须在子报表的XML中手动定义该参数,因为我在designer UI中找不到任何允许我将报表参数添加到RDLC文件的地方,我从主报表中得到一个错误,它显示:

An error occurred during local report processing.
Value cannot be null. Parameter name: value 
因此,它似乎在到达加载子报表的点之前就出错了

我正在将数据发送到主报表,如果我从子报表中删除参数,数据就会通过。但是如果我添加参数,报告就会抛出错误


有人知道是什么原因导致了这一切吗?

事实上,我最终找到了答案

如果您使用的是Visual Studio 2010,则需要进入报表定义文件并确保“报表数据”窗口处于打开状态

如果找不到,请转到“查看”并单击“报告数据”

打开窗口后,右键单击Parameters文件夹并在其中添加参数

在“参数声明”框中,确保选择“允许空值”,如果是文本类型,则选择“允许空值”。这将阻止错误的发生


出于某种原因,尽管我总是有一个值,但在本地报告中,它会使用null初始化报告参数,如果您不允许使用null/blank,则会导致它抛出该错误。

我刚刚遇到了从VS2005转换报告的相同情况。无论如何,我发现的另一件事是参数必须设置在两个地方

首先,在子报表版本中,您必须声明希望接收的参数及其各自的类型

此外,如果在主报告的子报告“属性”上单击鼠标右键,则会在一个部分中显示要传递给子报告的参数。这将来自主报告中驱动子报告的任何记录基础


只是想将此作为澄清传达给可能遇到或正在学习如何在VS2010中处理子报表的其他人。

似乎没有人理解需要根据主报表列值显示/过滤子报表数据。很抱歉抱怨,但花了很长时间,我终于明白了

我们需要在子报表中定义上面提到的报表参数,我们需要将参数值传递给子报表用于显示子报表数据的数据源。下面是代码片段。。我已使用ObjectDataSource填充子报表

Public Sub SubreportProcessingEventHandler(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
   'e.Parameters.Item(0) is the report parameter defined in Sub-report
    ObjectDataSource2.SelectParameters("Param1") = New Parameter("Param1", DbType.Int32, e.Parameters.Item(0).Values(0))         
     ObjectDataSource2.SelectParameters("Param2") = New Parameter("Param2", DbType.String, e.Parameters.Item(1).Values(0))
    e.DataSources.Add(New ReportDataSource("SubReportDataSourceName", ObjectDataSource2))
End Sub

谢谢@Philter。我也遇到了同样的问题,您的回答让我意识到父报表和子报表之间的参数名称存在拼写错误。注意:我不必设置Allow Null值或Allow Blank值来传递参数值。好主意,我在最初的问题中忘记了提到这一点。在SRS中,子报表通常看起来相当笨拙。这是一个很好的补充,但与这个问题相关的问题并不相关。大多数关于带有参数的本地子报表的教程都会告诉您必须将它们提供给子报表。问题是,由于参数的类型,即使提供了离散值,它们也需要允许为null和空白。您好,您能用C给出上面的代码吗?我也有同样的问题,我需要根据报表参数筛选数据集中的子报表。非常感谢。