<< Februar 2012 >>
M D M D F S S
  
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    

Login






Passwort vergessen?
Home arrow Blog arrow SQL Server arrow Alternierender Hintergrund für Gruppenfelder im SSRS
Alternierender Hintergrund für Gruppenfelder im SSRS PDF Drucken E-Mail
Geschrieben von Boris Werner   
Mär 17 2010

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!

» Keine Kommentare
Es gibt bisher noch keine Kommentare.
» Kommentar schreiben
E-Mail (wird nicht veröffentlicht)
Name
Titel
Kommentar
 verbleibende Zeichen
Captcha Image Code neu generieren, falls er unlesbar sein sollte
 
< zurück   weiter >