Tablix: ripeti le righe di intestazione su ogni pagina che non funziona - Generatore report 3.0


163

Ho una tablix con molte righe che si estendono su più pagine. Ho impostato la proprietà Tablix Ripeti le righe di intestazione su ogni pagina ma questo non funziona. Ho letto da qualche parte che questo è un bug noto in Report Builder 3.0. È vero? In caso contrario, c'è qualcos'altro che deve essere fatto?

Risposte:


426

Dipende dalla struttura della tablix che stai usando. In una tabella, ad esempio, non sono presenti gruppi di colonne, pertanto Reporting Services non riconosce quali caselle di testo sono le intestazioni di colonna e l'impostazione della proprietà RepeatColumnHeaders su True non funziona.

Invece, devi:

  1. Apri la Modalità avanzata nel riquadro Raggruppamenti. (Fare clic sulla freccia a destra dei gruppi di colonne e selezionare Modalità avanzata.)
    • Immagine dello schermo
  2. Nell'area Gruppi di righe (non gruppi di colonne), fai clic su un gruppo statico, che evidenzia la casella di testo corrispondente nella tablix. Fai clic su ciascun gruppo statico fino a evidenziare l'intestazione di colonna più a sinistra. Questo è generalmente il primo gruppo statico elencato.
  3. Nella finestra Proprietà, imposta la RepeatOnNewPageproprietà su True.
    • Immagine dello schermo
  4. Assicurarsi che la KeepWithGroupproprietà sia impostata su After.

La KeepWithGroupproprietà specifica a quale gruppo deve aderire il membro statico. Se impostato su, Afterl'elemento statico si attacca al gruppo dopo di esso o al di sotto di esso, fungendo da intestazione di gruppo. Se impostato su Before, l'elemento statico si attacca al gruppo prima o al di sopra di esso, fungendo da piè di pagina del gruppo. Se impostato su None, Reporting Services decide dove inserire il membro statico.

Ora, quando visualizzi il rapporto, le intestazioni di colonna si ripetono su ogni pagina della tablix.

Questo video mostra come impostarlo esattamente come descritto nella risposta.


1
Stacia, quando seleziono KeepWithGroup e provo a salvare, ottengo "Il tabTart" DetailTablix "ha un TablixMember non valido. Tutti gli elementi TablixMember in un TablixColumnHierarchy devono avere la proprietà RepeatOnNewPage impostata su false.". Qualche idea?
moodboom

24
Ho capito il mio problema. Stacia la tua risposta è assolutamente corretta, è solo una cosa difficile da ottenere nel modo giusto. Si noti che Stacia dice di cambiare l'area ROW Groups quando si imposta la proprietà RepeatOnNewPage. Tutto il resto di questa soluzione riguarda le colonne, ma è necessario selezionare i gruppi di righe (a sinistra), non i gruppi di colonne (a destra), anche se si inizia facendo clic sul menu a discesa in Colonne. Grazie Stacia, geniale.
moodboom,

5
+1 - Ho appena finito di leggere una dozzina di procedure dettagliate su questo su Internet, e questa è la migliore soluzione più diretta al problema - spieghi anche PERCHÉ le opzioni contano, il che è fantastico. Grazie!
JNK,

3
questo video mostra come impostarlo esattamente come descritto nella risposta: youtube.com/watch?v=WAO819-gkKw
riso con gamberetti

8
KeepWithGroup = After era la chiave per me. Come troppe cose di Microsoft, questo è un trucco non ovvio necessario per far funzionare una funzionalità. Grazie!
leqid

17

Ho 2.0 e ho trovato quanto sopra per aiutare; tuttavia, la selezione di una statica non ha evidenziato la cella per qualche motivo. Ho seguito questi passaggi:

  1. Sotto i gruppi di colonne selezionare l'avanzato e verrà visualizzata la statica
  2. Fai clic sullo statico che compare nei gruppi di righe
  3. Impostare KeepWithGroup su After e RepeatOnNewPage su true

Ora le intestazioni delle colonne dovrebbero essere ripetute su ogni pagina.


Questo ha funzionato perfettamente ... molto più semplice della precedente risposta che non ha funzionato per me.
R_Avery_17

sfortunatamente questo mi fa ricominciare a ottenere pagine bianche.
Mike,

10

Come ho risolto questo problema è stato modificato manualmente il codice dietro (dal menu Visualizza / codice). La sezione seguente dovrebbe avere un numero di coppie pari <TablixMember> </TablixMember>al numero di righe presenti nella tablix. Nel mio caso avevo più coppie <TablixMember> </TablixMember>del numero di righe nella tablix. Inoltre, se vai in "Modalità avanzata" (a destra di "Gruppi di colonne") il numero di linee statiche dietro i "Gruppi di righe" dovrebbe essere uguale al numero di righe nella tablix. Il modo per renderlo uguale è cambiare il codice.

<TablixRowHierarchy>
      <TablixMembers>
        <TablixMember>
          <KeepWithGroup>After</KeepWithGroup>
          <RepeatOnNewPage>true</RepeatOnNewPage>
        </TablixMember>
        <TablixMember>
          <Group Name="Detail" />
        </TablixMember>
      </TablixMembers>
    </TablixRowHierarchy>

Con mia sorpresa, farlo risolse il problema. Avevo una tablix con 6 righe (3 righe di intestazione più un gruppo con intestazione, dettaglio e riga di piè di pagina). Guardando la fonte sono stati mostrati 6 <TablixRow> s ma 7 <TablixMember> s in <TablixRowHierarchy>. Ho preso la mia migliore ipotesi su quale fosse il extra (uno che ha avvolto il gruppo) e l'ho rimosso. Il rendering di questa versione non è riuscito, ma il messaggio di errore indica che è necessario modificare le impostazioni <Ripeti ...> e <KeepWith ...> in modo che corrispondano alle precedenti; Ho cambiato quelli in "true" e "After" nella terza riga (statica) e voilà! Vorrei davvero aver capito;)!
GISmatters

Grazie per questo. Sto usando SSRS da oltre 10 anni e ho appena riscontrato questo problema - in effetti, c'era un involucro aggiuntivo di TablixMember intorno al gruppo (senza dubbio da esperimenti con l'aggiunta e la rimozione di gruppi). La pulizia dell'elenco dei membri ha risolto la misteriosa intestazione non ripetitiva.
Carl Daniel,

Grazie, ho dovuto eliminare due righe TablixMember in eccesso raggruppate e senza dati. Il segno di ciò per me nel mio rapporto era che c'erano due gruppi di righe statici invece di uno. Una volta rimosso l'eccesso di annidamento XML, le righe ripetute hanno iniziato a funzionare.
Noppadet,

1
Grazie. Solo questa soluzione ha funzionato per il mio rapporto in cui stavo affrontando il problema simile.
Syed

apparentemente manca l'impostazione corretta in Visual Studio. Pertanto, i suggerimenti "Impostazioni avanzate" che si riferiscono a ReportBuilder non sono stati d'aiuto. La modifica manuale del file ha funzionato come un fascino. Grazie!
MovGP0,

9

Apri Advanced Modenel riquadro Raggruppamenti. (Fare clic sulla freccia a destra dei gruppi di colonne e selezionare Modalità avanzata.)

Nell'area Gruppi di righe (non gruppi di colonne), fai clic su un gruppo statico, che evidenzia la casella di testo corrispondente nella tablix.

Fai clic su ciascun gruppo statico fino a evidenziare l'intestazione di colonna più a sinistra. Questo è generalmente il primo gruppo statico elencato.

Nella griglia delle proprietà:

  • impostato KeepWithGroupsuAfter
  • impostato RepeatOnNewPagesu Trueper ripetere le intestazioni
  • impostato FixedDatasu Trueper mantenere visibili le intestazioni

5

Un altro modo per ottenere questo risultato se il problema persiste è quello di effettuare le seguenti operazioni:

  • Cancella tutto il testo dell'intestazione della tabella lasciandolo vuoto.
  • Nella sezione "Intestazione" di Report aggiungi caselle di testo all'interno di un rettangolo, ciascuna casella di testo rappresenterà un'intestazione di colonna per la tabella.
  • Poiché questo rettangolo si trova nella sezione Intestazione rapporti, verrà visualizzato in tutte le pagine del rapporto.

Grazie Sufian.


2

Ciò che ha funzionato per me è stato creare un nuovo rapporto da zero.

Fatto questo e il nuovo rapporto funziona, confronterò i 2 file .rdl in Visual Studio. Questi sono in formato XML e spero che un veloce WindDiff o qualcosa possa rivelare quale fosse il problema.

Un'occhiata iniziale mostra che ci sono 700 righe di codice o una differenza un po 'più tra i due file, con il più grande dei 2 è il file difettoso. Uno sguardo superficiale ai tag TablixHeader non ha rivelato nulla di ovvio.

Ma nel mio caso era un file .rdl corrotto. Questo è stato originariamente copiato da un rapporto funzionante, quindi nel processo di rimozione di ciò che non è stato riutilizzato, questo potrebbe averlo corrotto. Tuttavia, in altri report in cui è stato eseguito lo stesso processo, le intestazioni potrebbero essere ripetute quando sono state eseguite le impostazioni corrette in Proprietà.

Spero che questo ti aiuti. Se hai un rapporto complesso, questa non è la soluzione rapida ma funziona.

Forse il confronto tra i file XML noti noti e quelli difettosi da parte tua renderebbe un buon post sul forum. Ci proverò dalla mia parte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.