グループフッタを毎ページに出力する方法はありますか?

文書番号 : 27211     文書種別 : 使用方法     最終更新日 : 2009/08/03
文書を印刷する
対象製品
ActiveReports for .NET 6.0J Professional
詳細
グループフッタには、グループヘッダのRepeatStyleプロパティのような機能が用意されておりません。そのため、一つのグループが複数ページに渡った場合に、グループフッタを毎ページに出力するといった動作には対応しておりません。

グループフッタそのものではなく、グループ単位のページ数や集計値のような、「グループフッタに出力する情報」をページの下部に出力する方法としては、下記のような方法が考えられます。

◆グループヘッダ上に出力したデータを、ページフッタ上に読み込む方法
毎ページの下部に出力されるセクションはページフッタのみですので、これを利用します。ただし、ページフッタ上にはデータとバインドしたコントロールを配置できませんので、コード上でデータをセットします。

※この方法は、イベントの発生順序を利用した方法なので、レポートの構成によっては適用できない場合があります。また、グループヘッダを毎ページに出力するために、グループヘッダのRepeatStyleプロパティを"OnPageIncludeNoDetail"に設定する必要があります。

具体的には、以下のような手順になります。
  1. ページフッタ上にTextBoxを1つ配置します。Summary***プロパティの設定は、製品ヘルプの「ページフッタにページ番号を設定する」で説明されている、総ページ数を出力する場合の設定にします。TextBoxのVisibleプロパティはFalseに設定し、表示されないようにしておきます。
    (このTextBoxは、ページフッタのBeforePrintイベントを最後に発生させるためのコントロールであり、実際にはレポート上には出力されません。)

  2. グループヘッダ上に、出力するデータにバインドされたTextBoxコントロール(TextBox1)を配置します。VisibleプロパティはFalseに設定し、表示されないようにしておきます。

    ※グループヘッダ/フッタ上に配置できるコントロールは、そのグループ内で変化しないデータ(グループ化のキーとなる値)にバインドされたものか、Summary***プロパティを使用してグループ単位の集計を行うコントロールのみです。レコード単位で変化するデータをバインドさせた場合、ページヘッダ/フッタセクションと同様、予想と異なる結果になることがあります。

  3. ページフッタ上にTextBoxコントロール(TextBox2)を配置します。

  4. グループヘッダ上に出力されたデータを、配列変数に保存し、ページフッタ上のTextBoxにセットするコードをそれぞれのセクションのBeforePrintイベントに追加します。

    ◆サンプルコード(VB.NET)
    Dim Data1(100) As String
    Private i As Integer = 0
    Private j As Integer = 0

    Private Sub GroupHeader1_BeforePrint(....)
      ' データを配列変数に保存します。
      Data1(i) = TextBox1.Text
      i += 1
    End Sub

    Private Sub PageFooter_BeforePrint(....)
      ' 保存したデータをTextBoxにセットします。
      TextBox2.Text = Data1(j)
      j += 1
    End Sub

    ◆サンプルコード(C#)
    string[] Data1 = new string[100];
    int i = 0;
    int j = 0;

    private void groupHeader1_BeforePrint(object sender, EventArgs e)
    {
      // データを配列変数に保存します。
      Data1[i] = this.textBox1.Text;
      i += 1;
    }

    private void pageFooter_BeforePrint(object sender, EventArgs e)
    {
      // 保存したデータをTextBoxにセットします。
      this.textBox2.Text = Data1[j];
      j += 1;
    }
関連情報
キーワード
HowTo デザイン・レイアウト

この文書は、以前は次のFAQ IDで公開されていました : 11888