按组重置RDLC报告中的页码

时间:2014-04-25 18:31:47

标签: c# rdlc

这似乎应该很简单。我有一个包含Tablix的报告,其中有一组由客户强制在组之间进行分页。我希望页码是按客户的,所以页面就是这样:

Customer1 Page 1/2
Customer1 Page 2/2
Customer2 Page 1/1
Customer3 Page 1/4
etc, etc

我似乎无法找到重置页码的方法或导致总页数为该组的总页数。

2 个答案:

答案 0 :(得分:4)

看起来似乎无法做到这一点,至少在VS 2012中。我能够在SSL的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.

最终结果,我正在将报告移至Reporting Services。

答案 1 :(得分:1)

可以实际完成,但不能在报告中添加一些自定义代码:

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)