This is a migrated thread and some comments may be shown as answers.

Crosstab - Repeat row header vertically

4 Answers 312 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Felipe
Top achievements
Rank 1
Felipe asked on 30 Jun 2014, 04:33 PM
Hi,

I am using Reporting Q3 2013. I am using a crosstab which has one column group and three row groups. My issue is that due to the level of grouping, the main row group may extend to different pages, vertically. I want to be able to repeat certain rows from the group on each page. The RowHeadersPrintOnEveryPage property does not help me as it only repeats the left column if the report expands horizontally, and ColumnHeadersPrintOnEveryPage will repeat vertically, but only column values, nothing related to the row values. I aslo tried to add row values to column header, but it will only repeat the first value, as expected.

Thanks

4 Answers, 1 is accepted

Sort by
0
Hinata
Top achievements
Rank 1
answered on 03 Jul 2014, 11:26 AM
Hi Felipe,

I'm not sure that such functionality exists out-of-the-box, but in any case it will be much easier to understand and test the described scenario if you provide us with a sample of it. Maybe a screenshot or even better - a report definition with some dummy data to help me and other forum members better understand the issue you are facing.
0
Felipe
Top achievements
Rank 1
answered on 10 Jul 2014, 04:23 PM
Hi Hardik,

Sorry it has taken me a bit to create a sample. Attached you can find a screenshot of the generated PDF and below are the source codes of the report files I used.

In the report I am using a crosstab. The line in blue are the column name/group. The line in green is the header for the row group, and this is the line I need to be able to repeat on the next page. The Grouping property is a field in the object, not being displayed. "Main" for all items in the first group, "Secondary" for items in the second group. Hope this helps and thanks for looking into this.

Report1.Designer.vb
Partial Class Report1
     
    'NOTE: The following procedure is required by the telerik Reporting Designer
    'It can be modified using the telerik Reporting Designer. 
    'Do not modify it using the code editor.
    Private Sub InitializeComponent()
        Dim TableGroup1 As Telerik.Reporting.TableGroup = New Telerik.Reporting.TableGroup()
        Dim TableGroup2 As Telerik.Reporting.TableGroup = New Telerik.Reporting.TableGroup()
        Dim TableGroup3 As Telerik.Reporting.TableGroup = New Telerik.Reporting.TableGroup()
        Dim TableGroup4 As Telerik.Reporting.TableGroup = New Telerik.Reporting.TableGroup()
        Dim TableGroup5 As Telerik.Reporting.TableGroup = New Telerik.Reporting.TableGroup()
        Dim TableGroup6 As Telerik.Reporting.TableGroup = New Telerik.Reporting.TableGroup()
        Dim TableGroup7 As Telerik.Reporting.TableGroup = New Telerik.Reporting.TableGroup()
        Dim StyleRule1 As Telerik.Reporting.Drawing.StyleRule = New Telerik.Reporting.Drawing.StyleRule()
        Me.pageHeaderSection1 = New Telerik.Reporting.PageHeaderSection()
        Me.detail = New Telerik.Reporting.DetailSection()
        Me.pageFooterSection1 = New Telerik.Reporting.PageFooterSection()
        Me.ObjectDataSource1 = New Telerik.Reporting.ObjectDataSource()
        Me.TextBox1 = New Telerik.Reporting.TextBox()
        Me.TextBox2 = New Telerik.Reporting.TextBox()
        Me.Crosstab1 = New Telerik.Reporting.Crosstab()
        Me.TextBox4 = New Telerik.Reporting.TextBox()
        Me.TextBox5 = New Telerik.Reporting.TextBox()
        Me.TextBox9 = New Telerik.Reporting.TextBox()
        Me.TextBox10 = New Telerik.Reporting.TextBox()
        Me.TextBox11 = New Telerik.Reporting.TextBox()
        Me.TextBox7 = New Telerik.Reporting.TextBox()
        CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
        '
        'pageHeaderSection1
        '
        Me.pageHeaderSection1.Height = Telerik.Reporting.Drawing.Unit.Inch(0.800000011920929R)
        Me.pageHeaderSection1.Items.AddRange(New Telerik.Reporting.ReportItemBase() {Me.TextBox1})
        Me.pageHeaderSection1.Name = "pageHeaderSection1"
        '
        'detail
        '
        Me.detail.Height = Telerik.Reporting.Drawing.Unit.Inch(5.6166672706604R)
        Me.detail.Items.AddRange(New Telerik.Reporting.ReportItemBase() {Me.Crosstab1})
        Me.detail.Name = "detail"
        '
        'pageFooterSection1
        '
        Me.pageFooterSection1.Height = Telerik.Reporting.Drawing.Unit.Inch(0.599999725818634R)
        Me.pageFooterSection1.Items.AddRange(New Telerik.Reporting.ReportItemBase() {Me.TextBox2})
        Me.pageFooterSection1.Name = "pageFooterSection1"
        '
        'ObjectDataSource1
        '
        Me.ObjectDataSource1.DataMember = "GetData"
        Me.ObjectDataSource1.DataSource = "Mobile.Web.Report1, Mobile.Web, Version=3.0.0.0, Culture=neutral, PublicKeyToken=" & _
    "null"
        Me.ObjectDataSource1.Name = "ObjectDataSource1"
        '
        'TextBox1
        '
        Me.TextBox1.Location = New Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(0.19999997317790985R), Telerik.Reporting.Drawing.Unit.Inch(0.19999997317790985R))
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.Size = New Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(2.2999999523162842R), Telerik.Reporting.Drawing.Unit.Inch(0.40000000596046448R))
        Me.TextBox1.Style.Font.Bold = True
        Me.TextBox1.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(20.0R)
        Me.TextBox1.Value = "Sample Report"
        '
        'TextBox2
        '
        Me.TextBox2.Location = New Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(0.19999997317790985R), Telerik.Reporting.Drawing.Unit.Inch(0.099999748170375824R))
        Me.TextBox2.Name = "TextBox2"
        Me.TextBox2.Size = New Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(5.3916664123535156R), Telerik.Reporting.Drawing.Unit.Inch(0.40000000596046448R))
        Me.TextBox2.Style.Font.Bold = True
        Me.TextBox2.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(20.0R)
        Me.TextBox2.Value = "=""Sample Report p-"" + CStr(PageNumber)"
        '
        'Crosstab1
        '
        Me.Crosstab1.Body.Columns.Add(New Telerik.Reporting.TableBodyColumn(Telerik.Reporting.Drawing.Unit.Inch(2.7708332538604736R)))
        Me.Crosstab1.Body.Rows.Add(New Telerik.Reporting.TableBodyRow(Telerik.Reporting.Drawing.Unit.Inch(1.0R)))
        Me.Crosstab1.Body.Rows.Add(New Telerik.Reporting.TableBodyRow(Telerik.Reporting.Drawing.Unit.Inch(0.50000005960464478R)))
        Me.Crosstab1.Body.Rows.Add(New Telerik.Reporting.TableBodyRow(Telerik.Reporting.Drawing.Unit.Inch(1.0R)))
        Me.Crosstab1.Body.Rows.Add(New Telerik.Reporting.TableBodyRow(Telerik.Reporting.Drawing.Unit.Inch(1.0R)))
        Me.Crosstab1.Body.Rows.Add(New Telerik.Reporting.TableBodyRow(Telerik.Reporting.Drawing.Unit.Inch(1.0000001192092896R)))
        Me.Crosstab1.Body.SetCellContent(1, 0, Me.TextBox4)
        Me.Crosstab1.Body.SetCellContent(4, 0, Me.TextBox9)
        Me.Crosstab1.Body.SetCellContent(3, 0, Me.TextBox10)
        Me.Crosstab1.Body.SetCellContent(2, 0, Me.TextBox11)
        Me.Crosstab1.Body.SetCellContent(0, 0, Me.TextBox7)
        TableGroup1.Groupings.Add(New Telerik.Reporting.Grouping("=Fields.ColumnName"))
        TableGroup1.Name = "columnGroup"
        TableGroup1.ReportItem = Me.TextBox5
        Me.Crosstab1.ColumnGroups.Add(TableGroup1)
        Me.Crosstab1.ColumnHeadersPrintOnEveryPage = True
        Me.Crosstab1.DataSource = Me.ObjectDataSource1
        Me.Crosstab1.Items.AddRange(New Telerik.Reporting.ReportItemBase() {Me.TextBox4, Me.TextBox5, Me.TextBox9, Me.TextBox10, Me.TextBox11, Me.TextBox7})
        Me.Crosstab1.Location = New Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(0.78125R), Telerik.Reporting.Drawing.Unit.Inch(0.61666661500930786R))
        Me.Crosstab1.Name = "Crosstab1"
        TableGroup3.Name = "group"
        TableGroup4.Name = "group1"
        TableGroup5.Name = "group4"
        TableGroup6.Name = "group3"
        TableGroup7.Name = "group2"
        TableGroup2.ChildGroups.Add(TableGroup3)
        TableGroup2.ChildGroups.Add(TableGroup4)
        TableGroup2.ChildGroups.Add(TableGroup5)
        TableGroup2.ChildGroups.Add(TableGroup6)
        TableGroup2.ChildGroups.Add(TableGroup7)
        TableGroup2.Groupings.Add(New Telerik.Reporting.Grouping("=Fields.FirstSubgroup"))
        TableGroup2.Name = "rowGroup"
        Me.Crosstab1.RowGroups.Add(TableGroup2)
        Me.Crosstab1.RowHeadersPrintOnEveryPage = True
        Me.Crosstab1.Size = New Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(2.7708332538604736R), Telerik.Reporting.Drawing.Unit.Inch(5.0R))
        '
        'TextBox4
        '
        Me.TextBox4.Name = "TextBox4"
        Me.TextBox4.Size = New Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(2.7708332538604736R), Telerik.Reporting.Drawing.Unit.Inch(0.50000005960464478R))
        Me.TextBox4.Value = "= Fields.Value1"
        '
        'TextBox5
        '
        Me.TextBox5.Name = "TextBox5"
        Me.TextBox5.Size = New Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(2.7708332538604736R), Telerik.Reporting.Drawing.Unit.Inch(0.5R))
        Me.TextBox5.Style.BackgroundColor = System.Drawing.SystemColors.ActiveCaption
        Me.TextBox5.Style.Font.Bold = True
        Me.TextBox5.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(15.0R)
        Me.TextBox5.Value = "= Fields.ColumnName"
        '
        'TextBox9
        '
        Me.TextBox9.Name = "TextBox9"
        Me.TextBox9.Size = New Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(2.7708332538604736R), Telerik.Reporting.Drawing.Unit.Inch(1.0000001192092896R))
        Me.TextBox9.StyleName = ""
        Me.TextBox9.Value = "= Fields.Value4"
        '
        'TextBox10
        '
        Me.TextBox10.Name = "TextBox10"
        Me.TextBox10.Size = New Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(2.7708332538604736R), Telerik.Reporting.Drawing.Unit.Inch(1.0R))
        Me.TextBox10.StyleName = ""
        Me.TextBox10.Value = "= Fields.Value3"
        '
        'TextBox11
        '
        Me.TextBox11.Name = "TextBox11"
        Me.TextBox11.Size = New Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(2.7708332538604736R), Telerik.Reporting.Drawing.Unit.Inch(1.0R))
        Me.TextBox11.StyleName = ""
        Me.TextBox11.Value = "= Fields.Value2"
        '
        'TextBox7
        '
        Me.TextBox7.Name = "TextBox7"
        Me.TextBox7.Size = New Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(2.7708332538604736R), Telerik.Reporting.Drawing.Unit.Inch(1.0R))
        Me.TextBox7.Style.BackgroundColor = System.Drawing.Color.MediumSeaGreen
        Me.TextBox7.Style.Font.Italic = True
        Me.TextBox7.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(13.0R)
        Me.TextBox7.StyleName = ""
        Me.TextBox7.Value = "= Fields.SecondSubgroup"
        '
        'Report1
        '
        Me.Items.AddRange(New Telerik.Reporting.ReportItemBase() {Me.pageHeaderSection1, Me.detail, Me.pageFooterSection1})
        Me.Name = "Report1"
        Me.PageSettings.Margins = New Telerik.Reporting.Drawing.MarginsU(Telerik.Reporting.Drawing.Unit.Inch(1.0R), Telerik.Reporting.Drawing.Unit.Inch(1.0R), Telerik.Reporting.Drawing.Unit.Inch(1.0R), Telerik.Reporting.Drawing.Unit.Inch(1.0R))
        Me.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Letter
        Me.Style.BackgroundColor = System.Drawing.Color.White
        StyleRule1.Selectors.AddRange(New Telerik.Reporting.Drawing.ISelector() {New Telerik.Reporting.Drawing.TypeSelector(GetType(Telerik.Reporting.TextItemBase)), New Telerik.Reporting.Drawing.TypeSelector(GetType(Telerik.Reporting.HtmlTextBox))})
        StyleRule1.Style.Padding.Left = Telerik.Reporting.Drawing.Unit.Point(2.0R)
        StyleRule1.Style.Padding.Right = Telerik.Reporting.Drawing.Unit.Point(2.0R)
        Me.StyleSheet.AddRange(New Telerik.Reporting.Drawing.StyleRule() {StyleRule1})
        Me.Width = Telerik.Reporting.Drawing.Unit.Inch(6.0R)
        CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
 
    End Sub
    Friend WithEvents pageHeaderSection1 As Telerik.Reporting.PageHeaderSection
    Friend WithEvents detail As Telerik.Reporting.DetailSection
    Friend WithEvents pageFooterSection1 As Telerik.Reporting.PageFooterSection
    Friend WithEvents ObjectDataSource1 As Telerik.Reporting.ObjectDataSource
    Friend WithEvents TextBox1 As Telerik.Reporting.TextBox
    Friend WithEvents TextBox2 As Telerik.Reporting.TextBox
    Friend WithEvents Crosstab1 As Telerik.Reporting.Crosstab
    Friend WithEvents TextBox4 As Telerik.Reporting.TextBox
    Friend WithEvents TextBox9 As Telerik.Reporting.TextBox
    Friend WithEvents TextBox10 As Telerik.Reporting.TextBox
    Friend WithEvents TextBox11 As Telerik.Reporting.TextBox
    Friend WithEvents TextBox5 As Telerik.Reporting.TextBox
    Friend WithEvents TextBox7 As Telerik.Reporting.TextBox
End Class

Report1.vb
Imports System.ComponentModel
Imports System.Drawing
Imports System.Windows.Forms
Imports Telerik.Reporting
Imports Telerik.Reporting.Drawing
 
Partial Public Class Report1
    Inherits Telerik.Reporting.Report
    Public Sub New()
        InitializeComponent()
    End Sub
 
    Public Shared Function GetData() As List(Of ReportItem)
        Dim lst As New List(Of ReportItem)
        lst.Add(New ReportItem("Fast Food", "Main", "Chains", "Burger"))
        lst.Add(New ReportItem("Fast Food", "Main", "Chains", "Pizza"))
        lst.Add(New ReportItem("Fast Food", "Main", "Chains", "Sub"))
        lst.Add(New ReportItem("Fast Food", "Main", "Chains", "TexMex"))
        lst.Add(New ReportItem("Fast Food", "Secondary", "Independent", "Food Truck"))
        lst.Add(New ReportItem("Fast Food", "Secondary", "Independent", "Hot Dogs"))
        lst.Add(New ReportItem("Fast Food", "Secondary", "Independent", "Pit Stops"))
        lst.Add(New ReportItem("Fast Food", "Secondary", "Independent", "Randoms"))
        lst.Add(New ReportItem("Slow Food", "Main", "Restaurants", "Steakhouse"))
        lst.Add(New ReportItem("Slow Food", "Main", "Restaurants", "Sushi"))
        lst.Add(New ReportItem("Slow Food", "Main", "Restaurants", "Pasta"))
        lst.Add(New ReportItem("Slow Food", "Main", "Restaurants", "Sea food"))
        lst.Add(New ReportItem("Slow Food", "Secondary", "Home Cooked", "Breakfast"))
        lst.Add(New ReportItem("Slow Food", "Secondary", "Home Cooked", "Lunch"))
        lst.Add(New ReportItem("Slow Food", "Secondary", "Home Cooked", "Dinner"))
        lst.Add(New ReportItem("Slow Food", "Secondary", "Home Cooked", "Snacks"))
        Return lst
    End Function
    Public Class ReportItem
        Public Property ColumnName As String
        Public Property FirstSubgroup As String
        Public Property SecondSubgroup As String
        Public Property Value1 As String
        Public Property Value2 As String
        Public Property Value3 As String
        Public Property Value4 As String
 
        Public Sub New(cn As String, fsg As String, ssg As String, val As String)
            ColumnName = cn
            FirstSubgroup = fsg
            SecondSubgroup = ssg
            Value1 = val.ToString & 1
            Value2 = val.ToString & 2
            Value3 = val.ToString & 3
            Value4 = val.ToString & 4
 
        End Sub
    End Class
End Class
0
Felipe
Top achievements
Rank 1
answered on 10 Jul 2014, 04:25 PM
Here's the image.
0
Hinata
Top achievements
Rank 1
answered on 15 Jul 2014, 11:45 AM
Hi Felipe,

The Crosstab item has the following properties:

ColumnHeadersPrintOnEveryPage
RowHeadersPrintOnEveryPage

which will force the Row / Column headers to be printed on every page. 

However, this applies only to the headers and you cannot have the body rows to
be repeated on every page.
Tags
General Discussions
Asked by
Felipe
Top achievements
Rank 1
Answers by
Hinata
Top achievements
Rank 1
Felipe
Top achievements
Rank 1
Share this question
or