我试图在SQL Server Reporting Services RDLC报表中表示父子孙关系。该报告将呈现到WPF应用程序中托管的reportviewer控件中。我正在使用基于IEnumberable 的CLR数据集,并将reportviewer数据源绑定(bind)到VM中的数据集。我希望每个子实体都显示在新页面上(如果数据集中足够多的子代,则跨页面)。我目前有上级实体的主报表,子级的子报表和孙级的子报表。每个报告都使用Tablix在页面上布局相应CLR类的字段。我已经在 child 的子报表的Tablix中分配了一个组,并将PageBreaks设置为StartAndEnd(即,在“组属性”对话框中选中了所有3个复选框)。我已关闭在任何可以找到的地方聚在一起。不幸的是,当我在“打印版式”模式下查看报表或导出为PDF时,分页符将被忽略,并且子报表中的子项将一起流动而没有分页符将它们分开。我已经在SO和MSDN上看到了几个有关不希望出现的分页符的问题,但是我还没有找到关于缺少分页符的任何讨论。有谁知道如何强制分页符出现在子报表中?如果不是,是否有一种更好/另一种方式来表示父/子数据而不使用子报表?感谢您提供的任何见解。FWIW,以下是一些可能涉及的RDLC摘录: 父报告: <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> (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 我有一个部分答案,但似乎像是入侵IMO。我将让这个问题待一会儿,看看是否有人可以提出更好的答案...为了使分页符显示在我想要的位置,我通过对驱动主报表的CLR数据集进行了非规范化,消除了嵌套的子报表。然后,我在主报表上使用行组来影响页面布局,并在“组属性”对话框的“分页符”选项卡上设置“在每个实例之间”和“也在开始时”复选框,这与RDLC xml中的以下设置等效: <PageBreak> <BreakLocation>Start</BreakLocation> </PageBreak>我将孙子实体(发票行)归一化到其自己的数据集和子报表中,因为行的列布局与发票标题或发票页面级别显着不同。尽管这会产生所需的布局,但我对这个答案并不完全满意,因为我不喜欢对数据集进行非规范化。我想研究DataElementName的工作原理,以及是否可以产生更好的解决方案。欢迎提供其他答案关于rdlc - RDLC子报表中的分页符不出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4742914/ (adsbygoogle = window.adsbygoogle || []).push({});
10-10 05:10