我有以下情况:
使用嵌套组报告,组列是否具有值1或2.下一个子组对于每个父组有2个组,因此对于父组1,有两个子组(1-1和1-3),还有对于父母组2我有两个孩子组(2-2和2-4)。
我的问题是,如何为1-1中的行设置颜色WhiteSmoke
,为1-3行设置颜色White
,为2-2设置WhiteSmoke
颜色White
为2-4。
如果有顺序如1,2,3,...,那么使用Mod
运算符会很容易,但我的顺序是1,3,2,4并且我找不到交替颜色的算法
EDITED
答案 0 :(得分:4)
我找到了答案。
=IIF(RunningValue("NameofGrouptoAlternateColor", CountDistinct, "NameofParentGroup") Mod 2, "White", "Wheat")
这对我有用,我认为这是原始海报试图完成的。
答案 1 :(得分:2)
=IIF(RunningValue(Fields!FieldToGroupOn.Value, CountDistinct, "ParentGroupName") Mod 2, "LightGrey", "Transparent")
其中:
FieldToGroupOn
是您要分组的数据集中的字段,并希望生成交替的颜色。
ParentGroupName
是Tablix中行组的名称,它是您要替换颜色的组的父级。
答案 2 :(得分:1)
假设这是订单:1,3,2,4,5,7,6,8...
您只想为3,4,7,8..
然后表达式应为:
=iif(RowNumber(Nothing) Mod 4 <> 0 AND
((RowNumber(Nothing)+1) Mod 4 <> 0), "White", "WhiteSmoke")
答案 3 :(得分:1)
如果我理解正确,你想在“改变组”上交替使用颜色。 如果是这样,这就是解决方案:
IIf(RowNumber("TheNameOfYourGroup") Mod 2 = 0, "White", "WhiteSmoke")
这是您用于Background Color
财产的表达方式。
答案 4 :(得分:1)
我被迫使用自定义代码来实现您的目标,这是我的解决方案:
自定义代码部分
Public Shared ReverseLookup = True
Public Function GetColor(ByVal currentValue As Integer, ByVal previosValue As Integer) As String
If ReverseLookup = True
If currentValue = previosValue Then
GetColor = "Gray"
Else
GetColor = "Green"
ReverseLookup = False
End If
Else
If currentValue = previosValue Then
GetColor = "Green"
Else
GetColor = "Gray"
ReverseLookup = True
End If
End If
End Function
在BackgroundColor属性中:
=Code.GetColor(Fields!secondid.Value, Previous(Fields!secondid.Value))
输入参数是当前的secondid值(来自paren group of details的值)和previos secondid值。
这是我的结果: 我相信这正是你所需要的:)