ReportViewer for ASP.NET Web Forms
複数ページのレポートの表示
C1ReportViewer コントロール > 複数ページのレポートの表示

複数ページのレポート全体が1つのページに表示され、テキストが重なってしまう場合があります。PDF ファイルにエクスポートすると、レポートは正しく表示されますが、C1ReportViewer の表示が不正になります。この問題を解決するには、MakeReport() メソッドを編集して、ドキュメントの代わりにレポートを返す必要があります。

MakeReport() メソッドの編集

最初、MakeReport() メソッドは次の例のようになっています。

Visual Basic
コードのコピー
Public Function MakeReport() As C1.C1Preview.C1PrintDocument

C#
コードのコピー
public C1.C1Preview.C1PrintDocument MakeReport()

次の例のように、MakeReport() メソッドを編集する必要があります。

Visual Basic
コードのコピー
Public Function MakeReport() As C1.C1Report.C1Report

C#
コードのコピー
public C1.C1Report.C1Report MakeReport()

レポートを返す

MakeReport() メソッドを編集したら、ドキュメントではなくレポートを返す必要があります。次のコードを使用して、レポートを返すことができます。

Visual Basic
コードのコピー
Return rpt

C#
コードのコピー
return rpt;

MakeReport() メソッドでレポートを返すコード全体については、次のサンプルを参照してください。

Visual Basic
コードのコピー
Public Function MakeReport() As C1.C1Report.C1Report
        ' ダミーデータテーブル
        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
        ' レポートを連結します
        Dim rpt As New C1.C1Report.C1Report()
        rpt.Load(Server.MapPath("RptTest.xml"), "Test")
        rpt.DataSource.Recordset = dt
        Return rpt
    End Function

C#
コードのコピー
public C1.C1Report.C1Report MakeReport()
        {
            // ダミーデータテーブル
            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);
            }
            // レポートを連結します
            C1.C1Report.C1Report rpt = new C1.C1Report.C1Report();
            rpt.Load(Server.MapPath("RptTest.xml"), "Test");
            rpt.DataSource.Recordset = dt;          
            return rpt;
        }