Add alternating row color to SQL Server Reporting services report Add alternating row color to SQL Server Reporting services report sql-server sql-server

Add alternating row color to SQL Server Reporting services report


Go to the table row's BackgroundColor property and choose "Expression..."

Use this expression:

= IIf(RowNumber(Nothing) Mod 2 = 0, "Silver", "Transparent")

This trick can be applied to many areas of the report.

And in .NET 3.5+ You could use:

= If(RowNumber(Nothing) Mod 2 = 0, "Silver", "Transparent")

Not looking for rep--I just researched this question myself and thought I'd share.


Using IIF(RowNumber...) can lead to some issues when rows are being grouped and another alternative is to use a simple VBScript function to determine the color.

It's a little more effort but when the basic solution does not suffice, it's a nice alternative.

Basically, you add code to the Report as follows...

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 IfEnd Function

Then on each cell, set the BackgroundColor as follows:

=Code.AlternateColor("AliceBlue", "White", True)

Full details are on this Wrox article


I got the chess effect when I used Catch22's solution, I think because my matrix has more than one column in design.that expression worked fine for me :

=iif(RunningValue(Fields![rowgroupfield].Value.ToString,CountDistinct,Nothing) Mod 2,"Gainsboro", "White")