The C1ReportViewer Control / Viewing a Multi-Page Report
Viewing a Multi-Page Report

In some cases, a multi-page report will display all on one page with overlapping text. When exported to a PDF file, the report will display properly, but the C1ReportViewer display is incorrect. To handle this issue, you need to edit the MakeReport() method and to return a report instead of a document.

Edit the MakeReport() Method:

To write code in Visual Basic

Visual Basic
Copy Code
Public Function MakeReport() As C1.C1Preview.C1PrintDocument

To write code in C#

C#
Copy Code
public C1.C1Preview.C1PrintDocument MakeReport()

Initially, your MakeReport() method may look like one of the following samples:

To write code in Visual Basic

Visual Basic
Copy Code
Public Function MakeReport() As C1.C1Report.C1Report

To write code in C#

C#
Copy Code
public C1.C1Report.C1Report MakeReport()

You need to edit the MakeReport() method to reflect one of the following samples:

Return a Report:

Once you've edited your MakeReport() method, you need to make sure you're returning a report instead of a document. You can use the following code to return a report:

To write code in Visual Basic

Visual Basic
Copy Code
Return rpt

To write code in C#

C#
Copy Code
Return rpt;

For a complete example of the MakeReport() method and returning a report, see the following samples:

To write code in Visual Basic

Visual Basic
Copy Code
    Public Function MakeReport() As C1.C1Report.C1Report

        ' Dummy datatable
        Dim dr As DataRow
        Dim dt As New DataTable
        dt.Columns.Add("Row")
                                                        
        For i As Integer = 0 To 100
            dr = dt.NewRow
            dr("Row") = "This is row " & i
            dt.Rows.Add(dr)
        Next
                                                
        ' Bind report
        Dim rpt As New C1.C1Report.C1Report()
        rpt.Load(Server.MapPath("RptTest.xml"), "Test")
        rpt.DataSource.Recordset = dt
        Return rpt

    End Function

To write code in C#

C#
Copy Code
public C1.C1Report.C1Report MakeReport()

        {

            // Dummy datatable
            DataRow dr = null;
            DataTable dt = new DataTable();
            dt.Columns.Add("Row");

            for (int i = 0; i <= 100; i++)
            {
                dr = dt.NewRow();
                dr["Row"] = "This is row " + i;
                dt.Rows.Add(dr);
            }

            // Bind report
            C1.C1Report.C1Report rpt = new C1.C1Report.C1Report();
            rpt.Load(Server.MapPath("RptTest.xml"), "Test");
            rpt.DataSource.Recordset = dt;          
            return rpt;

        }