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/en/product/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 .NET FastReport FastReport Pages Pages
22. April 2025

Umgang mit der TfrShellTreeView-Komponente in FastReport VCL

In diesem Artikel werden wir uns die TfrShellTreeView-Komponente ansehen. Es dient zur Anzeige von Dateisystemelementen und ist teilweise analog zu den Komponenten TDirectoryListBox, TDirectoryOutline und TShellTreeView.
21. April 2025

Funktionsweise von RFID-Tags in FastReport VCL

In diesem Artikel werden wir die Funktionsweise von RFID-Tags mit dem neuen TfrxDeviceCommand-Objekt in FastReport VCL mit der Veröffentlichung 2025.2 untersuchen.
8. April 2025

Einrichten der Verbindung mit Apache Ignite in FastReport .NET

In diesem Artikel werden wir untersuchen, wie Sie eine Verbindung zu Apache Ignite in FastReport .NET konfigurieren. Sie lernen die notwendigen Schritte, um das Plugin über Code und den Berichtsdesigner zu verbinden.
Fast Reports
  • 800-985-8986 (Englisch, USA)
  • +31 97 01025-8466 (Englisch, EU)
  • +49 30 56837-3928 (Deutsch, DE)
  • +55 19 98147-8148 (Portugiesisch, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.