组中的备用行背景颜色

时间:2013-02-13 14:16:55

标签: reporting-services ssrs-2008 rdlc rdl

我有以下情况:

使用嵌套组报告,组列是否具有值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

enter image description here

5 个答案:

答案 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")

enter image description here

答案 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值。

这是我的结果: 我相信这正是你所需要的:)

enter image description here