Одна вещь, которую я заметил, состоит в том, что ни один из двух лучших методов не имеет представления о том, какого цвета должен быть первый ряд в группе; группа будет начинаться с цвета, противоположного последней строке предыдущей группы. Я хотел, чтобы мои группы всегда начинались с одного цвета ... первый ряд каждой группы всегда должен быть белым, а следующий - цветным.
Основной идеей было сбросить переключатель при запуске каждой группы, поэтому я добавил немного кода:
Private bOddRow As Boolean
'*************************************************************************
' -- Display green-bar type color banding in detail rows
' -- Call from BackGroundColor property of all detail row textboxes
' -- Set Toggle True for first item, False for others.
'*************************************************************************
Function AlternateColor(ByVal OddColor As String, _
ByVal EvenColor As String, ByVal Toggle As Boolean) As String
If Toggle Then bOddRow = Not bOddRow
If bOddRow Then
Return OddColor
Else
Return EvenColor
End If
End Function
'
Function RestartColor(ByVal OddColor As String) As String
bOddRow = True
Return OddColor
End Function
Итак, теперь у меня есть три разных типа фона клетки:
- Первый столбец строки данных имеет значение = Code.AlternateColor («AliceBlue», «White», True) (совпадает с предыдущим ответом).
- Оставшиеся столбцы строки данных имеют = Code.AlternateColor («AliceBlue», «White», False) (Это также, как и предыдущий ответ.)
- Первый столбец строки группировки имеет = Code.RestartColor ("AliceBlue") (Это новое.)
- Оставшиеся столбцы строки группировки имеют = Code.AlternateColor («AliceBlue», «White», False) (раньше использовался, но не упоминается об этом для группировки строк.)
Это работает для меня. Если вы хотите, чтобы строка группировки была неокрашенной или другого цвета, из этого должно быть совершенно очевидно, как ее изменить.
Пожалуйста, не стесняйтесь добавлять комментарии о том, что можно сделать для улучшения этого кода: я новичок как в SSRS, так и в VB, поэтому я сильно подозреваю, что есть много возможностей для улучшения, но основная идея кажется обоснованной (и это было полезно для меня), поэтому я хотел выбросить это здесь.