嵌套子报表之间的共享子报表

时间:2012-09-06 14:32:09

标签: .net xml visual-studio reporting-services subreport

我有一个xml数据,我正在使用报告查看器将其转换为PDF。我有嵌套数据,所以我使用子报告。在其中一个案例中,我有两个子报告Sub1和Sub2来自1个主报告,他们正在调用一个公共子报告SubSub1。 SubSub1具有一些常见数据,并且还具有与Sub1和Sub2特别相关的数据的子报告。

<MainReport>
 <Sub1>
  <SubSub1>
   <data>
   </data>
  </SubSub1>
 </Sub1>
 <Sub2>
  <SubSub1>
   <data>
   </data>
  </SubSub1>
 <Sub2>
<MainReport>

我能够进一步了解这一点。这个数据的性质是我有多个MainReports。目前我正在为第一个MainReport获取Sub1和Sub2的正确数据,但后面的数据显示第一个MainReport的数据。调试显示正在向SubSub1的reportdatasource添加正确的数据,但reportviewer显示第一个MainReport(而不是2nd,3rd ...)的数据。为什么reportviewer卡住了以前数据源中的数据?

2 个答案:

答案 0 :(得分:0)

通过评论中添加的信息,我猜这个问题出在报表设计人员的可重新编译的.data文件缓存中,特别是在处理许多主要使用的子报表时报告。在使用BIDS2008中的子报表时,我甚至可以看到子报表的实际报表定义已缓存。

以下是一些“刷新”方法,让您的设计师重新走上正轨,从小到干进行排名:

  • 进行预览后,明确点击刷新。这通常会强制数据和渲染刷新。
  • 删除相应报告的.data文件,然后进行其他预览。
  • 关闭所有报表设计器(子报表和主报表)。删除.data个文件。
  • 关闭Visual Studio 执行以上所有操作。

如果最后一步不起作用,那么可能还有其他的东西在起作用,因为据我所知,完全将设计师重置为空白。

PS。您想要的(嵌套和重新使用子报告)是完全可能的。这通常只是设计师的喜欢。

答案 1 :(得分:0)

以下是一个示例xml文件:

  <MainReport>
    <data>
    </data>
    <A>
      <B>
        <Subreport>
          <data>
          </data>
        </Subreport>
        <data>
        </data>
        <Subreport>
          <data>
          </data>
        </Subreport>
        <Subreport>
          <data>
          </data>
        </Subreport>
        <data>
        </data>
      </B>
    </A>
    <C>
      <B>
        <data>
        </data>
        <Subreport>
          <data>
          </data>
        </Subreport>
          <Subreport>
          <data>
          </data>
        </Subreport>
        <data>
        </data>
      </B>
    </C>
    <data>
    </data>
    <Subreport>
      <data>
      </data>
    </Subreport>
  </MainReport>

B是A和C之间的公共子报告,并且有多个MainReport。对于单个MainReport,A和C也将有多个B。加载此xml后,我将通过子报表处理事件处理程序为每个子报表添加数据。