按组重置RDLC报告中的页码
本文关键字:报告 RDLC | 更新日期: 2023-09-27 18:00:05
这看起来应该足够简单。我有一个报告,里面有Tablix,它有按客户划分的组,强制在组之间分页。我希望页码是每个客户的,所以页面应该是这样的:
Customer1 Page 1/2
Customer1 Page 2/2
Customer2 Page 1/1
Customer3 Page 1/4
etc, etc
我似乎找不到重置页码的方法,也找不到将总页数设置为组的总页数的方法。
看起来这是不可能的,至少在VS 2012中是这样。我能够让它在SSRS的RDL中工作,然后我打开RDL,找到了相关的部分
<Group Name="MemberId">
<GroupExpressions>
<GroupExpression>=Fields!MemberId.Value</GroupExpression>
</GroupExpressions>
<PageBreak>
<BreakLocation>StartAndEnd</BreakLocation>
<ResetPageNumber>true</ResetPageNumber>
</PageBreak>
</Group>
然后,我将其带回我的RDLC,并将<ResetPageNumber>true</ResetPageNumber>
插入到我的组中。当我在VS中再次打开该文件时,显示了以下错误。
Deserialization failed: The element 'PageBreak' in namespace
'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition'
has invalid child element 'ResetPageNumber' in namespace
'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition'.
List of possible elements expected: 'BreakLocation' in namespace
'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition'
as well as any element in namespace '##other'. Line 1812, position 20.
最终结果是,我将把报告转移到ReportingServices。
实际上可以完成,但不需要向报告中添加一些自定义代码:
Shared reportGroup as String
Shared newPage as Integer
Public Function ResetPageNumber(newGroup as String)
If Not (reportGroup = newGroup)
reportGroup = newGroup
newPage = 1
Else
newPage = newPage + 1
End If
Return newPage
End Function
然后在页脚中,添加页码的文本框,并使其值为:
= Code.ResetPageNumber(ReportItems!TextBoxWithYourGroupNameOrID.Value)