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

Programmatically Adding Table Causes Blank Pages Q3 2009

3 Answers 147 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Bruce
Top achievements
Rank 2
Bruce asked on 05 May 2010, 07:03 PM
I am creating a schedule for games using the reporting and am unable to find solution for this.  i attempted keeptogether = false in the detailsection, but i get an invocation exception. 

i am building and populating tables dynamically and adding each to the detailsection.
issue is that i get up to 4 blank pages in between each new page with a table of game times on fields.
here is my man procedure to do so:

Public Sub BuildTable(ByRef t As Telerik.Reporting.Table, ByVal d As System.Data.DataTable, ByVal day As String, ByVal totaltables As Integer)

        t.Body.Rows.Add(New Telerik.Reporting.TableBodyRow(New Telerik.Reporting.Drawing.Unit(80, Telerik.Reporting.Drawing.UnitType.Pixel)))

        '
        'build report items for table
        '
        For Each c As System.Data.DataColumn In d.Columns
            c.ColumnName = c.ColumnName.Replace(" ", "_")
        Next

        For Each c As System.Data.DataColumn In d.Columns

            'we build the textbox for header
            Dim txtbox As New Telerik.Reporting.TextBox
            txtbox.Name = c.ColumnName
            txtbox.Size = New Telerik.Reporting.Drawing.SizeU(New Telerik.Reporting.Drawing.Unit(80, Telerik.Reporting.Drawing.UnitType.Pixel), New Telerik.Reporting.Drawing.Unit(50, Telerik.Reporting.Drawing.UnitType.Pixel))
            txtbox.Style.BackgroundColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
            txtbox.Style.BorderStyle.Default = Telerik.Reporting.Drawing.BorderType.Solid
            txtbox.Style.Font.Bold = True
            txtbox.Style.Padding.Bottom = New Telerik.Reporting.Drawing.Unit(5, Telerik.Reporting.Drawing.UnitType.Pixel)
            txtbox.Style.Padding.Left = New Telerik.Reporting.Drawing.Unit(10, Telerik.Reporting.Drawing.UnitType.Pixel)
            txtbox.Style.Padding.Top = New Telerik.Reporting.Drawing.Unit(5, Telerik.Reporting.Drawing.UnitType.Pixel)
            If c.ColumnName.Trim = "Start" Then
                txtbox.Value = day
            Else
                txtbox.Value = Replace(c.ColumnName, "_", " ")
            End If


            'we create value textbox
            Dim txtvalue As New Telerik.Reporting.TextBox
            txtvalue.Name = "Value" & d.Columns.IndexOf(c).ToString
            txtvalue.Size = New Telerik.Reporting.Drawing.SizeU(New Telerik.Reporting.Drawing.Unit(50, Telerik.Reporting.Drawing.UnitType.Pixel), New Telerik.Reporting.Drawing.Unit(50, UnitType.Pixel))
            txtvalue.Style.BorderStyle.Default = Telerik.Reporting.Drawing.BorderType.Solid
            txtvalue.Style.Padding.Left = New Telerik.Reporting.Drawing.Unit(5, Telerik.Reporting.Drawing.UnitType.Pixel)
            txtvalue.Style.Padding.Top = New Telerik.Reporting.Drawing.Unit(5, Telerik.Reporting.Drawing.UnitType.Pixel)
            If c.ColumnName.Trim = "Start" Then
                txtvalue.Value = "=thunder.apps.sa.reports.dal.reports.ConvertStartTime(Fields." & c.ColumnName & ")"

            Else
                txtvalue.Value = "=Fields." & c.ColumnName

            End If

            'we add new column
            t.Body.Columns.Add(New Telerik.Reporting.TableBodyColumn(New Telerik.Reporting.Drawing.Unit(90, Telerik.Reporting.Drawing.UnitType.Pixel)))

            t.Body.SetCellContent(0, d.Columns.IndexOf(c), txtvalue)



            'table group
            Dim tg As Telerik.Reporting.TableGroup = New Telerik.Reporting.TableGroup
            tg.ReportItem = txtbox
            tg.Name = "Group" & d.Columns.IndexOf(c).ToString

            t.ColumnGroups.Add(tg)
            t.Items.Add(txtvalue)
            t.Items.Add(txtbox)

        Next

        Dim tgroup As Telerik.Reporting.TableGroup = New Telerik.Reporting.TableGroup
        tgroup.Grouping.AddRange(New Telerik.Reporting.Data.Grouping() {New Telerik.Reporting.Data.Grouping("")})
        tgroup.Name = "DetailGroup"

        t.RowGroups.Add(tgroup)

        'additional table specs
        t.DataMember = ""
        t.DataSource = d

        Dim y As Integer = totaltables

        't.Items.AddRange(New Telerik.Reporting.ReportItemBase() {Me.TextBox8, Me.TextBox9, Me.TextBox10, Me.TextBox12, Me.TextBox14, Me.TextBox16, Me.TextBox18, Me.TextBox5, Me.TextBox11, Me.TextBox15, Me.TextBox13, Me.TextBox6, Me.TextBox7, Me.TextBox17, Me.TextBox19, Me.TextBox20})
        t.Location = New Telerik.Reporting.Drawing.PointU(New Telerik.Reporting.Drawing.Unit(0, Telerik.Reporting.Drawing.UnitType.Inch), New Telerik.Reporting.Drawing.Unit(y, Telerik.Reporting.Drawing.UnitType.Pixel))
        t.Name = day.Replace("/", "")

        '  t.Size = New Telerik.Reporting.Drawing.SizeU(New Telerik.Reporting.Drawing.Unit(width, Telerik.Reporting.Drawing.UnitType.Pixel), New Telerik.Reporting.Drawing.Unit(height, Telerik.Reporting.Drawing.UnitType.Inch))
        ' t.Style.BorderStyle.Default = Telerik.Reporting.Drawing.BorderType.Solid
        t.KeepTogether = False
        t.Anchor = AnchorStyles.Left

    End Sub

3 Answers, 1 is accepted

Sort by
0
Peter
Telerik team
answered on 11 May 2010, 09:59 AM
Hi Bruce,

I examined your code snippet and it looks like you are creating the tables one over another, this causes the rendering extension to move every new Table item to right and bottom, resulting in lots of empty pages being rendered. To correct this please set a different Y (Top) locations for each table so they don't overlap.

Kind regards,
Peter
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
0
Paulo
Top achievements
Rank 1
answered on 22 Sep 2010, 10:25 AM
Hi,

I enconter de same problem, but your solution doesn't solve it.

In fact, i create dynamically from code 2 tables without creating table item from designer .. all from code in the constructor function of my report, but even if i change locations ... the 2nd table appears on the rigth bottom corner .. and when i render in PDF, blank pages appears between the 2 tables.

Can you help me please ?

Paul
0
Peter
Telerik team
answered on 24 Sep 2010, 02:18 PM
Hi Paulo,

The location and the size properties are compulsory in order to avoid overlapping of table items. If the table items get overlapped then one of tables will be moved to right in HTML rendering.

Let us know whether the suggestion helps and for further assistance we will appreciate if you send us a runnable sample report through the support system so we can debug it locally.

Greetings,
Peter
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Tags
General Discussions
Asked by
Bruce
Top achievements
Rank 2
Answers by
Peter
Telerik team
Paulo
Top achievements
Rank 1
Share this question
or