ページ数の取得について
グループごとの総ページ数・現在ページ数の設置
グループごとの総ページ数と現在ページ数を取得する場合のプロパティ設定について説明します。TextBoxコントロールのSummaryGroupプロパティを設定すると、グループごとにページカウントが行われます。
グループ内の現在ページ番号を取得するときはSummaryRunningプロパティをGroupに設定します。総ページ数を取得するときは帳票全体のときと同じく、Noneに設定します。
ページ | プロパティ | 設定値 |
現在ページ | SummaryGroup | [集計したいグループ] |
SummaryRunning | Group | |
SummaryType | PageCount | |
総ページ | SummaryGroup | [集計したいグループ] |
SummaryRunning | None | |
SummaryType | PageCount |
ページ数のスタートを1以外に設定したい場合
PageCountの最終的な値は描画が終了したReport_Endイベント内で捕捉することはできますが、ページヘッダ・ページフッタのSummaryプロパティからは直接取得することはできません。また、ActiveReports帳票では現在ページ数を取得するためにPageNumberプロパティを使用しますが、このプロパティは読み取り専用なので直接変更することはできません。
よって、ページ番号をアプリケーション側で制御する場合は、別の変数に保持しておいたページ番号を表示させる必要があります。
ページ番号をカスタマイズするにはページ番号を保持するフィールドを追加し、ページヘッダのFormatイベントで現在のページ番号と処理を追加します。
private int anotherPageCount = 0; protected const int AddNumber = 4; //ページ数を5から開始する場合 //Formatイベント private void pageHeader_Format(object sender, EventArgs e) { //現在ページ数を計算 anotherPageCount = PageNumber + AddNumber; //TextBoxに代入 this.currentPage.Text = anotherPageCount.ToString(); }
Dim anotherPageCount = 0 Protected Const addNumber = 4 'ページ数を5から開始する Private Sub PageHeader_Format(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles PageHeader.Format '現在ページ数を計算 anotherPageCount = Me.PageNumber + addNumber 'TextBoxに代入 Me.currentPage.Text = anotherPageCount.ToString() End Sub
カスタマイズした総ページ数を取得する場合も、PageCountプロパティは使わず現在ページ数をMAX関数で集計した値を表示させます。
今回は、アンバウンドフィールドを追加して表示させる例を紹介します。
private void NewActiveReport1_DataInitialize(object sender, System.EventArgs e) { Fields.Add("GetCount"); }
Private Sub NewActiveReport1_DataInitialize( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.DataInitialize Fields.Add("GetCount") End Sub
private void NewActiveReport1_FetchData(object sender, DataDynamics.ActiveReports.ActiveReport3.FetchEventArgs eArgs) { try { Fields["GetCount"].Value = anotherPageCount; } catch { eArgs.EOF = true; } }
Private Sub NewActiveReport1_FetchData(ByVal sender As System.Object, _ ByVal eArgs As DataDynamics.ActiveReports.ActiveReport3.FetchEventArgs) _ Handles MyBase.FetchData Try Fields("GetCount").Value = anotherPageCount Catch ex As Exception eArgs.EOF = True End Try End Sub
総ページ数Textboxのプロパティを以下のように設定し、現在ページの最大値をとるようにします。
プロパティ | 設定値 |
SummaryFunc | Max |
SummaryGroup | なし |
SummaryRunning | None |
SummaryType | GrandTotal(総合計) |
DataField | GetCount(現在ページ数) |