SSRS 2012 行内的交替组颜色

SSRS 2012 Alternating Group Colour within rows

嗨,我有一个简单的 SSRS 2012 报告,其中包含 table。所有数据都通过存储过程显示。没有分组即

部门姓名年龄
A 级 Bob 15
A 级起诉 16
A 类乔 15

B 级山姆 15
B 类插孔 15
B 级玛丽 16
C 级皮特 15
C 级起诉 16

D 级 Jo 15
D 级玛丽 14
D 级杰克 14

我希望每个 'group' 的行色块改变,即先是白色,然后是蓝色

非常感谢

您可以在您希望报告更改颜色的任何位置使用以下表达式(背景、文本)。

=Switch(
        Fields!Dept.Value = "ClassA" , "Red"
      , Fields!Dept.Value = "ClassB" , "Orange"
      , Fields!Dept.Value = "ClassC" , "Green"
      , Fields!Dept.Value = "ClassD" , "Yellow"
      )

Report-Report Properties...Code 选项卡上插入以下代码:

Dim LastDept AS String = ""
Dim Color AS String

Function GetColor(Dept As String) AS String
  if (Dept <> LastDept) Then
    if (Color = "White") Then
      Color = "PowderBlue"
    Else
      Color = "White"
    End If
  End If
End Function

然后将您所在行的 BackgroundColor 表达式设置为

=Code.GetColor(Fields!Dept.Value)

只要部门发生变化,就会在白色和粉蓝色之间切换行的背景色。

一段时间以来,我一直在寻找同一件事的解决方案,只是偶然发现了这个解决方案。

将以下表达式添加到正在分组的行的背景色 属性 将交替使用 Gainsboro 和白色之间的组颜色。

=IIF(RunningValue(Fields!Category.Value,CountDistinct, Nothing) MOD 2 = 1, "Gainsboro", "White")

其中字段!Category.Value 是您分组所依据的存储过程的值。

希望这就是您要找的。

谢谢

我将类似的东西用于各种替代颜色方案。

在报告的自定义代码中:

Private CountArr(,) AS String
Private eleID AS Integer
Public Function AlternateColours(OddCol AS String, EvenCol AS String, RowID AS String, UserID AS Integer)

    If UserID > eleID
        eleID = UserID
        ReDim Preserve CountArr(1,eleID -1)
    End If

    If CountArr(0,UserID-1) <> RowID
        CountArr(0,UserID-1) = RowID
        CountArr(1, UserID-1) += 1
    End If

    If CountArr(1, UserID-1) MOD 2 <> 0
        Return OddCol
    Else
        Return EvenCol
    End If

End Function

Public Function ResetAlternateColours(Value AS String)

    ReDim CountArr(1, 0)
    eleID = 0
    Return Value

End Function

说明

OddCol 是第一种颜色,EvenCol 是备用颜色,RowID 是一个字符串,用于确定何时发生行更改 -- 这可以是正确标识新行的任何值,例如字段值的串联或甚至只是未分组行的任意字符串。 (根据您的要求,您的参数将是字段!Dept.Value)

UserID 是由用户选择的整数值,用于标识行在数组中的位置。推荐的用法是按照报表呈现的顺序从 1 开始提供数字。

仅供参考:报告按阅读顺序呈现,即从左到右、从上到下。

重置功能也包含在您希望交替颜色从头开始的区域中。对于我个人的使用,我让它接受一个字符串作为值,并在重置后 return 该值。

=Code.ResetAlternateColours(字段!Total.Value)

没有必要,您可以从函数中删除 return 值,然后将其添加到单元格的末尾。

=字段!Total.Value + Code.ResetAlternateColours()

只要记住渲染顺序就可以了。

此函数可用于列、行、单元格以及您能想到的任何其他内容,只要您记住呈现顺序并相应地递增 UserID。

供您使用:

=Code.AlternateColours("White", "Blue", 字段!Dept.Value, 1)