|
Ich habe gerade mal wieder etwas längeran einem Problem im SSRS gesessen. Zwar kann man recht einfach alternierende Hintergrundfarben für normale Zeilen vergeben, indem man die RowNumber Funktion nutzt:
=IIf(RowNumber("table1_Group1") Mod 2 = 1,"#dbe5f1", "White")
Wenn man jedoch das Ganze auch für den Header einer Gruppierung machen möchte, stellt sich das nicht so einfach dar. Ich habe mir folgendem Workaround beholfen:
Folgendes als Custom Code (Bericht -> Berichtseigenschaften -> Code) eintragen:
Shared offset as Integer
Shared currentgroup as Object
Shared LastRowNumber as Integer
Public Function GetGroupNumber(group as Object, RowNumber as Integer) as Object
If (RowNumber< LastRowNumber)
offset = 0
End If
LastRowNumber = RowNumber
If Not (group = currentgroup)
offset += 1
currentgroup = group
End If
Return offset
End Function
Dann als BackgroundColor den folgenden Ausdruck verwenden:
=IIf(Code.GetGroupNumber(Fields!Themen_ID.Value, RowNumber("table1")) Mod 2 = 1,"#dbe5f1", "White")
Viel Spaß damit. Ich hoffe, ich kann jemandem die Zeit ersparen
EDIT: Leider werden Zeilen, die gefiltert werden nicht ausgenommen... Hmpf
EDIT 2: Mit folgendem Ausdruck bin ich wenigstens schonmal ein bisschen weiter gekommen... ich teste noch:
=IIf(InScope("table1_Details_Group"), "black", IIf(Code.GetGroupNumber(Fields!Themen_ID.Value, RowNumber("table1")) Mod 2 = 1, "#dbe5f1", "White"))
EDIT 3: Nu hab ichs aber, es könnte sogar sein, dass das ursprüngliche schon funktioniert hat, aber so isses sicher:
Custom Code:
Shared offset as Integer
Shared currentgroup as Object
Shared LastRowNumber as Integer
Public Function GetGroupNumber(group as Object, RowNumber as Integer) as Object
If (RowNumber< LastRowNumber)
offset = 0
End If
LastRowNumber = RowNumber
If Not (group = currentgroup)
offset += 1
currentgroup = group
End If
Return offset
End Function
Public Function GetOffset() as Object
Return offset
End Function
Dann für die table_Details_Group als BackgroundColor folgenden Ausdruck:
=IIf(Code.GetOffset() Mod 2 = 0, IIf(RowNumber("table1_Group1") Mod 2 = 1,"#dbe5f1", "White") ,IIf(RowNumber("table1_Group1") Mod 2 = 0,"#dbe5f1", "White"))
Für die übergeordnete Gruppe:
=IIf(InScope("table1_Details_Group"),"White", IIf(Code.GetGroupNumber(Fields!Themen_ID.Value, RowNumber("table1")) Mod 2 = 1,"#dbe5f1", "White"))
Fields!Themen_ID.Value muss natürlich durch das Gruppenfeld getauscht werden!
|