Сбросить номер страницы в отчете RDLC по группам
Кажется, это должно быть достаточно просто. У меня есть отчет, в котором есть Tablix, в котором группы по группам клиентов заставляют разрывать страницы между группами. Я хочу, чтобы номера страниц были для каждого клиента, чтобы страницы выглядели так:
Customer1 Page 1/2
Customer1 Page 2/2
Customer2 Page 1/1
Customer3 Page 1/4
etc, etc
Я не могу найти способ сбросить номера страниц или сделать так, чтобы общее количество страниц было общим для группы.
2 ответа
Похоже, что это не может быть сделано, по крайней мере, в VS 2012. Я смог заставить его работать в RDL для SSRS, затем я открыл этот 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.
Конечный результат, я перемещаю отчет в службы отчетов.
Это может быть сделано на самом деле, но не без добавления некоторого пользовательского кода в отчет:
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)