2011-01-20 79 views
6

我想在SQL Server Reporting Services RDLC报表中表示父子子孙关系。该报告呈现在一个WPF应用程序中的reportviewer控件中。我正在使用基于IEnumberable的CLR数据集,并将reportviewer数据源绑定到VM中的我的数据集。RDLC子报表中的分页符不会出现

我希望每个子实体都显示在一个新页面上(如果它们在数据集中有足够的祖孙,则跨页)。

我目前有一份父母实体的主报告,一份子报告和一份子女报告。

每个报表都使用Tablix来布置页面上相应CLR类的字段。 我已经在孩子的子报表的Tablix中分配了一个组,并将PageBreaks设置为StartAndEnd(即在组属性对话框中选中了所有3个复选框)。

我已经关闭了,到处都可以找到它。

不幸的是,当我在打印布局模式下查看报表或导出为PDF时,分页符将被忽略,并且子报表中的子项都一起流动,而没有分页符分隔它们。

我在SO和MSDN上看到过几个关于不期望的分页符的问题,但是我还没有找到关于缺少分页符的任何讨论。

有谁知道如何强制分页符出现在子报告中? 如果没有,是否有更好的/替代的方式来表示这样的父/子数据而不使用子报告?

感谢您提供的任何见解。

FWIW,下面是RDLC可能是relavent几个摘录:

家长报告:

 <TablixRow> 
      <Height>0.25in</Height> 
      <TablixCells> 
      <TablixCell> 
       <CellContents> 
       <Rectangle Name="Rectangle1"> 
        <ReportItems> 
        <Subreport Name="InvoicePageDetail"> 
         <ReportName>InvoicePageDetail</ReportName> 
         <Parameters> 
         <Parameter Name="InvoiceID"> 
          <Value>=Fields!InvoiceID.Value</Value> 
         </Parameter> 
         <Parameter Name="CustID"> 
          <Value>=Fields!CustID.Value</Value> 
         </Parameter> 
         </Parameters> 
         <Height>0.25in</Height> 
         <Width>6.4in</Width> 
         <Style> 
         <Border> 
          <Style>None</Style> 
         </Border> 
         </Style> 
        </Subreport> 
        </ReportItems> 
        <PageBreak> 
        <BreakLocation>End</BreakLocation> 
        </PageBreak> 
       </Rectangle> 
       <ColSpan>3</ColSpan> 
       </CellContents> 
      </TablixCell> 
      <TablixCell /> 
      <TablixCell /> 
      </TablixCells> 
     </TablixRow> 

子报告:

<?xml version="1.0" encoding="utf-8"?> 
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"> 
    <DataSources> 
    <DataSource Name="ISCBillingDataModel"> 
     <ConnectionProperties> 
     <DataProvider>System.Data.DataSet</DataProvider> 
     <ConnectString>/* Local Connection */</ConnectString> 
     </ConnectionProperties> 
     <rd:DataSourceID>50ce54a7-32e3-46df-bd7c-97f194ba4390</rd:DataSourceID> 
    </DataSource> 
    </DataSources> 
    <DataSets> snip... 
    </DataSets> 
    <Body> 
    <ReportItems> 
     <Tablix Name="Tablix1"> 
     <TablixBody> 
      <TablixColumns> snip... 
      </TablixColumns> 
      <TablixRows> 
      <TablixRow> 
       <Height>0.25in</Height> 
       <TablixCells> 
       <TablixCell> 
        <CellContents> 
        <Subreport Name="InvoiceFixedFeeDetail"> 
         <ReportName>InvoiceFixedFeeDetail</ReportName> 
         <Parameters> 
         <Parameter Name="InvoicePageID"> 
          <Value>=Fields!InvoicePageID.Value</Value> 
         </Parameter> 
         </Parameters> 
         <Style> 
         <Border> 
          <Style>None</Style> 
         </Border> 
         </Style> 
        </Subreport> 
        <ColSpan>3</ColSpan> 
        </CellContents> 
       </TablixCell> 
       <TablixCell /> 
       <TablixCell /> 
       </TablixCells> 
      </TablixRow> 
      </TablixRows> 
     </TablixBody> 
     <TablixColumnHierarchy> 
      <TablixMembers> 
      <TablixMember /> 
      <TablixMember /> 
      <TablixMember /> 
      </TablixMembers> 
     </TablixColumnHierarchy> 
     <TablixRowHierarchy> 
      <TablixMembers> 
      <TablixMember> 
       <Group Name="Group1"> 
       <GroupExpressions> 
        <GroupExpression>=Fields!InvoicePageID.Value</GroupExpression> 
       </GroupExpressions> 
       <PageBreak> 
        <BreakLocation>StartAndEnd</BreakLocation> 
       </PageBreak> 
       </Group> 
       <SortExpressions> 
       <SortExpression> 
        <Value>=Fields!InvoicePageID.Value</Value> 
       </SortExpression> 
       </SortExpressions> 
       <TablixHeader> 
       <Size>0.03125in</Size> 
       <CellContents> 
        <Textbox Name="Textbox11"> 
        <CanGrow>true</CanGrow> 
        <CanShrink>true</CanShrink> 
        <KeepTogether>true</KeepTogether> 
        <Paragraphs> 
         <Paragraph> 
         <TextRuns> 
          <TextRun> 
          <Value /> 
          <Style /> 
          </TextRun> 
         </TextRuns> 
         <Style /> 
         </Paragraph> 
        </Paragraphs> 
        <rd:DefaultName>Textbox11</rd:DefaultName> 
        <Style> 
         <Border> 
         <Color>LightGrey</Color> 
         <Style>None</Style> 
         </Border> 
        </Style> 
        </Textbox> 
       </CellContents> 
       </TablixHeader> 
       <TablixMembers> 
       <TablixMember> 
        <Group Name="Details"> 
        <PageBreak> 
         <BreakLocation>StartAndEnd</BreakLocation> 
        </PageBreak> 
        </Group> 
        <TablixMembers> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        </TablixMembers> 
       </TablixMember> 
       </TablixMembers> 
      </TablixMember> 
      </TablixMembers> 
     </TablixRowHierarchy> 
     <DataSetName>pages</DataSetName> 
     <PageBreak> 
      <BreakLocation>Start</BreakLocation> 
     </PageBreak> 
     <Height>3.45in</Height> 
     <Width>6.38125in</Width> 
     <Style> 
      <Border> 
      <Style>None</Style> 
      </Border> 
     </Style> 
     </Tablix> 
    </ReportItems> 
    <Height>3.6in</Height> 
    <Style> 
     <Border> 
     <Color>Green</Color> 
     <Style>None</Style> 
     </Border> 
    </Style> 
    </Body> 
    <ReportParameters> 
    <ReportParameter Name="InvoiceID"> 
     <DataType>Integer</DataType> 
     <Prompt>ReportParameter1</Prompt> 
    </ReportParameter> 
    <ReportParameter Name="CustID"> 
     <DataType>String</DataType> 
     <Prompt>ReportParameter1</Prompt> 
    </ReportParameter> 
    </ReportParameters> 
    <Width>6.43125in</Width> 
    <Page> 
    <LeftMargin>1in</LeftMargin> 
    <RightMargin>1in</RightMargin> 
    <TopMargin>1in</TopMargin> 
    <BottomMargin>1in</BottomMargin> 
    <Style /> 
    </Page> 
    <rd:ReportID>a360303c-713c-4baf-b9ce-32ae0997c855</rd:ReportID> 
    <rd:ReportUnitType>Inch</rd:ReportUnitType> 
</Report> 
+0

感谢您的赏金jball。你遇到类似的问题吗?到目前为止,我能想出的唯一答案是完全解规范数据集。我仍然希望有人能够提出更好的答案。 – 2011-05-12 01:39:51

+0

我遇到了类似的问题,最后我用了相同的解决方法。希望有人有更好的主意。 – jball 2011-05-13 20:39:36

回答

0

我有一个部分答案,但它似乎像一个黑客国际海事组织。我会留下这个问题一段时间,看看有人可以建议更好的答案...

为了强制分页符出现在我想要的地方,我通过反规范化CLR来消除嵌套的子报表数据集正在推动主要报告。然后,我使用主报表上的行组来实现页面布局,并在RDLC xml中设置等同于以下设置的“组属性”对话框的“分页”选项卡上的“每个实例之间”和“同时处于开始位置”复选框:

  <PageBreak> 
       <BreakLocation>Start</BreakLocation> 
      </PageBreak> 

我不停地归到各自的数据集和分报告的盛大子实体(发票行),因为该行的列布局比在发票页眉或页发票水平显著不同。


虽然这会产生所需的布局,但我并不完全满意这个答案,因为我不喜欢反规范化数据集。我想研究DataElementName的工作原理以及是否可以产生更好的解决方案。

替代答案欢迎