我将此用于交替的背景颜色
IIF((RowNumber(Nothing)Mod 2),“GAINSBORO”,“WHITE”)
但我需要在Tablix中隐藏我的一行,然后导致这种情况发生
使用隐藏行继续交替颜色的行的最佳方法是什么?
答案 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”))
给出这个结果
然后将可见性表达式应用于行以取消值“绿色”,例如使用此表达式
=iif(Fields!Colour.Value = "Green", True, False)
结果是这样的
请注意,尽管表格中间没有记录,但着色仍然会发生变化
这是您想要的行为,是否可以应用于您的项目?如果您需要进一步的帮助,请告诉我。
答案 1 :(得分:0)
您是否看到有关交替行颜色的this previous answer?
您可以使用CountDistinct和RunningValue的组合来计算背景中的行号,然后可以使用它来设置行的BackgroundColor属性,假设您要报告的每个行都有唯一值。
例如Tablix行的BackgroundColor属性中的以下表达式
=iif((RunningValue(CountDistinct(Fields!Serial.Value), Sum, "DataSet1") mod 2) = 0, "Tomato", "LimeGreen")
将此表设置为具有交替的红色和绿色行。