C# 在SSRS表/tablix单元格中使用子报表

C# 在SSRS表/tablix单元格中使用子报表,c#,visual-studio-2010,reporting-services,C#,Visual Studio 2010,Reporting Services,在我的应用程序中,我有一个报表,其中一个子报表包含在表单元格中。在SubreportProcessing事件处理程序中,我为子报表的每个实例提供了一组不同的数据。在VS 2008中,这很有效。但是,当我切换到VS2010并升级报告文件格式时,行为发生了变化。主表中的所有子报表实例现在都包含我为第一个表行提供的数据。我的代码如下所示 void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)

在我的应用程序中,我有一个报表,其中一个子报表包含在表单元格中。在SubreportProcessing事件处理程序中,我为子报表的每个实例提供了一组不同的数据。在VS 2008中,这很有效。但是,当我切换到VS2010并升级报告文件格式时,行为发生了变化。主表中的所有子报表实例现在都包含我为第一个表行提供的数据。我的代码如下所示

void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
    // _index is a global variable that is reset to zero in the DataBind procedure.
    Trip currentTrip = _trips[_index];

    e.DataSources.Add(new ReportDataSource("DataSourceName", currentTrip.Items));

    _index++;
}
这是故意的行为吗?现在如何为表中同一子报表的多个实例提供不同的数据集

提前谢谢


弗拉迪斯拉夫(Vladislav)

在对我的代码进行了一些探索和修补之后,我找到了一个解决办法。解决方案是在子报表中创建一个伪参数,然后需要将其绑定到tablix数据集中的一个字段。只要子报表参数和tablix数据集字段都是类型兼容的,任何字段都可以。您不必对子报表中的参数执行任何操作,但现在SSRS显示同一子报表的多个实例,tablix中的每一行都有一个单独的实例

希望这对其他人也有帮助


Vladislav

您是否介意共享附加到SubreportProcessing事件的代码?您是在创建报表之后,还是在以后的阶段执行此操作?我在调用InitializeComponent()函数之后在窗体的构造函数中手动执行此操作。