SSRS 中用于排序的不同颜色
Different color for sorting in SSRS
我有一个客户想要在 SSRS 报告中使用一些颜色格式。由于客户要求,我无法使用分组。我按 Main Tank
对报告进行排序,并希望这些排序颜色交替。所以它会有几行 Tank A
都是灰色的,然后几行 Tank B
都是白色的。我目前正在使用它,但它只适用于每种类型的第一行
=iif(
Fields!Tank.Value=previous(Fields!Tank.Value),
"Transparent",
"Red"
)
任何帮助都会很棒。
我会在您的查询中处理这个问题,方法是添加一列 returns 0 或 1 来定义颜色 - 创意草图:使用排名获取与排序顺序相关的数字,然后使用 MOD 2 得到 0 或 1。如果您 post 一个示例查询,我们可以帮助找出具体细节。
您可以使用自定义代码来获取所需的逻辑。在您的代码中使用自定义函数,returns 颜色基于 Tank 值。
转到 Report
菜单,Report Properties
/ Code
选项卡,然后在文本区域输入此代码:
Dim prevColor As String = "Transparent"
Public Function GetColor(ByVal flag As Integer) As String
If flag = 1 Then
If prevColor = "Transparent" Then
prevColor = "Gray"
Else
prevColor = "Transparent"
End If
End If
Return prevColor
End Function
现在在单元格背景颜色属性中使用这个表达式:
=Code.GetColor(iif(Fields!Tank.Value=previous(Fields!Tank.Value),0,1))
它将给背景着色如下:
更新: 上面的逻辑只对第一、第三、第五列等正确着色。是多次调用GetColor
函数,覆盖了全局变量prevColor
.
造成的
我设法通过将行号传递给函数来解决这个问题。这是更新后的功能:
Dim prevColor As String = "Transparent"
Dim rowNum As Integer = 0
Public Function GetColor(ByVal flag As Integer, ByVal nRow As Integer) As String
If flag = 1 And rowNum <> nRow Then
If prevColor = "Transparent" Then
prevColor = "Gray"
Else
prevColor = "Transparent"
End If
End If
rowNum = nRow
Return prevColor
End Function
请注意,该函数接收一个新参数,因此调用表达式已更改:
=Code.GetColor(iif(Fields!Tank.Value=previous(Fields!Tank.Value),0,1),
RowNumber("DataSet3"))
Replace "DataSet3"
by the actual name of your dataset.
它应该生成以下 tablix:
如果有帮助请告诉我。
我有一个客户想要在 SSRS 报告中使用一些颜色格式。由于客户要求,我无法使用分组。我按 Main Tank
对报告进行排序,并希望这些排序颜色交替。所以它会有几行 Tank A
都是灰色的,然后几行 Tank B
都是白色的。我目前正在使用它,但它只适用于每种类型的第一行
=iif(
Fields!Tank.Value=previous(Fields!Tank.Value),
"Transparent",
"Red"
)
任何帮助都会很棒。
我会在您的查询中处理这个问题,方法是添加一列 returns 0 或 1 来定义颜色 - 创意草图:使用排名获取与排序顺序相关的数字,然后使用 MOD 2 得到 0 或 1。如果您 post 一个示例查询,我们可以帮助找出具体细节。
您可以使用自定义代码来获取所需的逻辑。在您的代码中使用自定义函数,returns 颜色基于 Tank 值。
转到 Report
菜单,Report Properties
/ Code
选项卡,然后在文本区域输入此代码:
Dim prevColor As String = "Transparent"
Public Function GetColor(ByVal flag As Integer) As String
If flag = 1 Then
If prevColor = "Transparent" Then
prevColor = "Gray"
Else
prevColor = "Transparent"
End If
End If
Return prevColor
End Function
现在在单元格背景颜色属性中使用这个表达式:
=Code.GetColor(iif(Fields!Tank.Value=previous(Fields!Tank.Value),0,1))
它将给背景着色如下:
更新: 上面的逻辑只对第一、第三、第五列等正确着色。是多次调用GetColor
函数,覆盖了全局变量prevColor
.
我设法通过将行号传递给函数来解决这个问题。这是更新后的功能:
Dim prevColor As String = "Transparent"
Dim rowNum As Integer = 0
Public Function GetColor(ByVal flag As Integer, ByVal nRow As Integer) As String
If flag = 1 And rowNum <> nRow Then
If prevColor = "Transparent" Then
prevColor = "Gray"
Else
prevColor = "Transparent"
End If
End If
rowNum = nRow
Return prevColor
End Function
请注意,该函数接收一个新参数,因此调用表达式已更改:
=Code.GetColor(iif(Fields!Tank.Value=previous(Fields!Tank.Value),0,1),
RowNumber("DataSet3"))
Replace
"DataSet3"
by the actual name of your dataset.
它应该生成以下 tablix:
如果有帮助请告诉我。