SSRS如何从交替的背景颜色中删除隐藏的行

时间:2015-11-07 06:01:46

标签: reporting-services rows background-color hidden

我将此用于交替的背景颜色

IIF((RowNumber(Nothing)Mod 2),“GAINSBORO”,“WHITE”)

before hidden row

但我需要在Tablix中隐藏我的一行,然后导致这种情况发生

after row hidden

使用隐藏行继续交替颜色的行的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

根据this对另一个问题的回答,我有另一种交替行颜色的方法,这次考虑了隐藏的行。

您需要将以下自定义代码添加到报告

Dim CurrentColour As String
Dim LastRowNumber AS Integer

Function SwitchColour(ThisRowNumber As Integer) As String
    If CurrentColour = "" Then
        CurrentColour = "Red"
    End If

    If LastRowNumber = 0 Then
        LastRowNumber = ThisRowNumber
    End If

    If LastRowNumber <> ThisRowNumber Then
        ' Change the colour
         If CurrentColour = "Red" Then
            CurrentColour = "Yellow"
        Else 
            CurrentColour = "Red"
        End If
        LastRowNumber = ThisRowNumber 
    End If

    Return CurrentColour 
End Function

这有效地保存了CurrentColour的值,以便在报表中的元素之间保持不变。当SwitchColour函数运行时,它确定行号是否已更改(LastRowNumber <> ThisRowNumber),如果是,则更改单元格的颜色。

将此样本数据用作“DataSet1”

Val | Colour
----+-------
36  | Red
22  | Red
55  | Green
23  | Red
74  | Red

将单元格BackgroundColour设置为

=Code.SwitchColour(RowNumber(“DataSet1”))

给出这个结果

enter image description here

然后将可见性表达式应用于行以取消值“绿色”,例如使用此表达式

=iif(Fields!Colour.Value = "Green", True, False)

结果是这样的

enter image description here

请注意,尽管表格中间没有记录,但着色仍然会发生变化

这是您想要的行为,是否可以应用于您的项目?如果您需要进一步的帮助,请告诉我。

答案 1 :(得分:0)

您是否看到有关交替行颜色的this previous answer

您可以使用CountDistinct和RunningValue的组合来计算背景中的行号,然后可以使用它来设置行的BackgroundColor属性,假设您要报告的每个行都有唯一值。

例如Tablix行的BackgroundColor属性中的以下表达式

=iif((RunningValue(CountDistinct(Fields!Serial.Value), Sum, "DataSet1") mod 2) = 0, "Tomato", "LimeGreen")

将此表设置为具有交替的红色和绿色行。

enter image description here