Verwendung des CreatePage-Ereignisses in FastReport .NET

2024-04-08

Ein neues CreatePage-Ereignis tritt ein, wenn die FastReport .NET-Engine eine neue Seite erstellt. An diesem Zeitpunkt können Sie die Seiteneigenschaften ändern. Die anderen Ereignisse StartPage, FinishPage und ManualBuild werden vor dem Beginn/Ende der Erstellung der Seitenvorlage aufgerufen.

So können Sie beispielsweise zwischen Seiten im Hoch- und Querformat wechseln. Oder Sie können dieses Ereignis verwenden, um eine separate Datenquelle zu erstellen, die Informationen über ExportAlias oder andere Seiteneigenschaften enthält. Wenn das Ereignis ausgeführt wird, können Sie Parameter setzen und in der Datenquelle am Anfang der nächsten Seite iterieren.

Die modifizierte Demo ist ein Bericht, der das CreatePage-Ereignis für die ExportAlias-Aufgabe verwendet. Ein Beispiel für einen Bericht mit diesem Ereignis wird nachstehend beschrieben:

<?xml version="1.0" encoding="utf-8"?>
<Report ScriptLanguage="CSharp" TextQuality="Regular" ReportInfo.Description="Demonstrates a group report. To create it:&#13;&#10;- go to "Report|Configure Bands..." menu;&#13;&#10;- press "Add" button and add a group header (this will add a data band and a group footer as well);&#13;&#10;- return to the report page, doubleclick the group header to show its editor." ReportInfo.Created="01/17/2008 04:31:41" ReportInfo.Modified="03/13/2024 17:32:59" ReportInfo.CreatorVersion="1.0.0.0">
 <ScriptText>
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using FastReport;
using FastReport.Data;
using FastReport.Dialog;
using FastReport.Barcode;
using FastReport.Table;
using FastReport.Utils;
 
namespace FastReport
{
 public class ReportScript
 {
 private void Page1_CreatePage(object sender, EventArgs e)
 {
 if(Data1.DataSource.RowCount == 0)
 Data1.InitDataSource();
 Page1.ExportAlias = Data1.DataSource["ProductName"].ToString().Substring(0,1);
 }
 }
}
</ScriptText>
 <Styles>
 <Style Name="EvenRows" Fill.Color="OldLace" Font="Arial, 10pt"/>
 </Styles>
 <Dictionary>
 <TableDataSource Name="Products" ReferenceName="NorthWind.Products" DataType="System.Int32" Enabled="true">
 <Column Name="ProductID" DataType="System.Int32"/>
 <Column Name="ProductName" DataType="System.String"/>
 <Column Name="SupplierID" DataType="System.Int32"/>
 <Column Name="CategoryID" DataType="System.Int32"/>
 <Column Name="QuantityPerUnit" DataType="System.String"/>
 <Column Name="UnitPrice" DataType="System.Decimal"/>
 <Column Name="UnitsInStock" DataType="System.Int16"/>
 <Column Name="UnitsOnOrder" DataType="System.Int16"/>
 <Column Name="ReorderLevel" DataType="System.Int16"/>
 <Column Name="Discontinued" DataType="System.Boolean" BindableControl="CheckBox"/>
 <Column Name="EAN13" DataType="System.String"/>
 </TableDataSource>
 <Total Name="TotalProducts" TotalType="Count" Evaluator="Data1" PrintOn="GroupFooter1"/>
 </Dictionary>
 <ReportPage Name="Page1" Watermark.Font="Arial, 60pt" CreatePageEvent="Page1_CreatePage">
 <ReportTitleBand Name="ReportTitle1" Width="718.2" Height="103.95" CanGrow="true">
 <TextObject Name="Text1" Top="56.7" Width="718.2" Height="47.25" Text="ALPHABETICAL PRODUCT LIST" HorzAlign="Center" VertAlign="Center" Font="Tahoma, 14pt, style=Bold"/>
 <TextObject Name="Text11" Top="28.35" Width="718.2" Height="28.35" Anchor="Top, Left, Right" Fill.Color="WhiteSmoke" CanGrow="true" CanShrink="true" Text="[Report.ReportInfo.Description]&#13;&#10;" Padding="4, 4, 4, 4" Font="Tahoma, 8pt"/>
 <TextObject Name="Text18" Width="718.2" Height="28.35" Anchor="Top, Left, Right" Fill.Color="WhiteSmoke" Cursor="Hand" Hyperlink.Value="http://fast.report/cda2a" Hyperlink.OpenLinkInNewTab="true" Text="Learn how to build this report on the Fast Reports Academy channel" VertAlign="Center" Font="Tahoma, 10pt, style=Bold, Underline" TextFill.Color="Blue"/>
 </ReportTitleBand>
 <GroupHeaderBand Name="GroupHeader1" Top="107.15" Width="718.2" Height="37.8" StartNewPage="true" KeepWithData="true" Condition="[Products.ProductName].Substring(0,1)" SortOrder="None">
 <TextObject Name="Text7" Left="9.45" Width="699.3" Height="37.8" Border.Lines="All" Border.Color="LightSkyBlue" Fill="LinearGradient" Fill.StartColor="LightSkyBlue" Fill.EndColor="AliceBlue" Fill.Angle="90" Fill.Focus="0.42" Fill.Contrast="1" Text="[[Products.ProductName].Substring(0,1)]" Padding="5, 0, 0, 0" VertAlign="Center" Font="Tahoma, 12pt, style=Bold"/>
 <DataBand Name="Data1" Top="148.15" Width="718.2" Height="18.9" DataSource="Products" KeepTogether="true">
 <TextObject Name="Text2" Left="9.45" Width="604.8" Height="18.9" Border.Lines="Left" Border.Color="LightSkyBlue" Text="[Products.ProductName]" VertAlign="Center" Font="Tahoma, 8pt">
 <Highlight>
 <Condition Expression="[Row#] % 2 == 0" Fill.Color="AliceBlue" TextFill.Color="Black" Font="Arial, 10pt" ApplyFill="true" ApplyTextFill="false"/>
 </Highlight>
 </TextObject>
 <TextObject Name="Text4" Left="614.25" Width="94.5" Height="18.9" Border.Lines="Right" Border.Color="LightSkyBlue" Text="[Products.UnitPrice]" Format="Currency" Format.UseLocale="true" Format.DecimalDigits="2" HorzAlign="Right" VertAlign="Center" Font="Tahoma, 8pt">
 <Highlight>
 <Condition Expression="[Row#] % 2 == 0" Fill.Color="AliceBlue" TextFill.Color="Black" Font="Arial, 10pt" ApplyFill="true" ApplyTextFill="false"/>
 </Highlight>
 </TextObject>
 <Sort>
 <Sort Expression="[Products.ProductName]"/>
 </Sort>
 </DataBand>
 <GroupFooterBand Name="GroupFooter1" Top="170.25" Width="718.2" Height="47.25" KeepWithData="true">
 <TextObject Name="Text8" Left="9.45" Width="699.3" Height="18.9" Border.Lines="Left, Right, Bottom" Border.Color="LightSkyBlue" Text="Total products: [TotalProducts]" HorzAlign="Right" VertAlign="Center" Font="Tahoma, 8pt, style=Bold"/>
 </GroupFooterBand>
 </GroupHeaderBand>
 <PageFooterBand Name="PageFooter1" Top="220.7" Width="718.2" Height="28.35" Fill.Color="WhiteSmoke">
 <TextObject Name="Text9" Left="614.25" Width="94.5" Height="28.35" Text="[PageN]" HorzAlign="Right" VertAlign="Center" Font="Tahoma, 8pt"/>
 <TextObject Name="Text12" Left="9.45" Width="217.35" Height="28.35" Cursor="Hand" Hyperlink.Value="https://www.fast-report.com/products/fast-report-net" Text="Generated by FastReport .NET" VertAlign="Center" Font="Tahoma, 8pt, style=Underline" TextFill.Color="Blue"/>
 </PageFooterBand>
 </ReportPage>
</Report>

Ergebnis nach dem Berichtexport in Excel 2007 aus dem obigen Beispiel:

Beispiel für das Exportieren eines fertigen Berichts

Anmerkung 1. Engine.CurPage wird nach dem Aufruf des neuen Ereignisses inkrementiert, und da CurPage ein Seitenindex ist, beträgt sein Wert 0, wenn die ersten zwei Seiten erstellt werden. Daher empfehlen wir, dass Sie bei der Verwendung eines neuen Ereignisses Ihren eigenen Seitenzähler im Berichtsskript starten.

Anmerkung 2. Wenn Sie die Eigenschaft Visible auf false ändern, wird der weitere Seitenaufbau gestoppt.

Mit der neuen Eigenschaft ist es möglich, zu einer neuen Zeile eines Datensatzes zu springen und die Seiteneigenschaft zu ändern, wenn neue Seiten hinzugefügt werden.

.NET FastReport Pages
22. Juni 2026

So konfigurieren Sie einen Bericht mit Business Objects im Code und im FastReport .NET Designer

In diesem Artikel wird anhand eines praxisnahen Beispiels gezeigt, wie Sie eine .frx-Berichtsvorlage erstellen und verwenden, die mit hierarchischen Business Objects in FastReport .NET herzustellen.
28. April 2026

Neues Berichtsvalidierungssystem in FastReport VCL

In diesem Artikel erklären wir, wie die Berichtsprüfung funktioniert, wie sie konfiguriert wird, wie Sie eigene Regeln anhand von Beispielen erstellen und geben Einblicke in interessante Neuerungen.
21. April 2026

Verwendung von Wasserzeichen in FastReport VCL

Der Artikel hat die Funktionalität zum Hinzufügen von Wasserzeichen in FastReport VCL ausführlich behandelt – sowohl über die visuelle Oberfläche als auch programmgesteuert mit Delphi-Code und in Berichtsskripten.

© 1998-2026 Fast Reports Inc.