Pau*_*vez 6 rdlc subreport page-break ssrs-2008
我试图在SQL Server Reporting Services RDLC报告中表示父子孙关系.该报告将呈现为WPF应用程序中托管的reportviewer控件.我正在使用基于IEnumberable <>的CLR数据集,并将reportviewer数据源绑定到VM中的数据集.
我希望每个子实体显示在一个新页面上(如果数据集中有足够的子孙,则跨页面).
我目前有父实体的主报告,子项的子报告和子孙的另一个子报告.
每个报告都使用Tablix来布局页面上相应CLR类的字段.我在子项的子报表Tablix中分配了一个Group,并将PageBreaks设置为StartAndEnd(即在Group Properties对话框中选中了所有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>
Run Code Online (Sandbox Code Playgroud)
分报告:
<?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>
Run Code Online (Sandbox Code Playgroud)
我有一个部分答案,但在我看来这似乎是一个黑客。我会暂时保留这个问题,看看是否有人可以提出更好的答案......
为了强制分页符出现在我想要的位置,我通过对驱动主报告的 CLR 数据集进行非规范化来消除嵌套的子报告。然后,我在主报告上使用行组来影响页面布局,并在“组属性”对话框的“分页符”选项卡上设置“每个实例之间”和“也在开头”的复选框,相当于 RDLC xml 中的以下设置:
<PageBreak>
<BreakLocation>Start</BreakLocation>
</PageBreak>
Run Code Online (Sandbox Code Playgroud)
我将孙子实体(发票行)标准化为它们自己的数据集和子报告,因为行的列布局与发票标题或发票页面级别显着不同。
虽然这会产生所需的布局,但我对此答案并不完全满意,因为我不喜欢对数据集进行非规范化。我想检查 DataElementName 的工作原理以及这是否可以产生更好的解决方案。
欢迎其他答案
| 归档时间: |
|
| 查看次数: |
2381 次 |
| 最近记录: |