gpt4 book ai didi

rdlc - RDLC 子报表中的分页符不出现

转载 作者:行者123 更新时间:2023-12-01 18:39:56 29 4
gpt4 key购买 nike

我试图在 SQL Server Reporting Services RDLC 报告中表示父子孙关系。该报表将呈现到托管在 WPF 应用程序中的报表查看器控件中。我正在使用基于 IEnumberable<> 的 CLR 数据集,并将报表查看器数据源绑定(bind)到虚拟机中的数据集。

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

我目前有一个父实体的主报告、一个子实体的子报告和另一个子实体的子报告。

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

我已经在所有能找到的地方关闭了 keep Together。

不幸的是,当我在打印布局模式下查看报表或导出为 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>

最佳答案

我有一个部分答案,但在我看来这似乎是一个黑客。我将暂时保留这个问题,看看是否有人可以提出更好的答案......

为了强制分页符出现在我想要的位置,我通过对驱动主报告的 CLR 数据集进行非规范化来消除嵌套的子报告。然后,我在主报告上使用行组来影响页面布局,并在“组属性”对话框的“分页符”选项卡上设置“每个实例之间”和“也在开头”的复选框,相当于 RDLC xml 中的以下设置:

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

我将孙子实体(发票行)标准化为自己的数据集和子报告,因为行的列布局与发票标题或发票页面级别显着不同。

<小时/>

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

欢迎其他答案

关于rdlc - RDLC 子报表中的分页符不出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4742914/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com