Новое событие CreatePage происходит в момент создания новой страницы движком FastReport .NET. На этом этапе вы можете изменять свойства страницы. Другие события StartPage, FinishPage и ManualBuild вызывается перед началом\концом построения шаблона страницы.
Так, например, можно сделать чередование страниц альбомной и книжной ориентации. Или же с помощью этого события можно создать отдельный источник данных, который будет содержать информацию о ExportAlias или другие свойства страниц. В момент выполнения события можно будет задавать параметры, а в начале следующей страницы проводить итерацию в источнике данных.
Модифицированный демо – отчет с использованием события CreatePage для задания ExportAlias. Пример отчета с этим событием описан в следующем примере:
<?xml version="1.0" encoding="utf-8"?> <Report ScriptLanguage="CSharp" TextQuality="Regular" ReportInfo.Description="Demonstrates a group report. To create it: - go to "Report|Configure Bands..." menu; - press "Add" button and add a group header (this will add a data band and a group footer as well); - 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] " 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>
Результат экспорта отчета из примера в Excel 2007:
Примечание 1. Engine.CurPage увеличивается после вызова нового события и так как CurPage является индексом страницы, то при создании первых двух страниц его значение будет равно 0. Поэтому мы рекомендуем при использовании нового события заводить свой счетчик страниц в скрипте отчета.
Примечание 2. При изменении свойства Visible на значение false дальнейшее построение станицы останавливается.
Благодаря новому свойству появляется возможность переходить на новую строку записи данных, а также изменять свойство страницы по мере добавления новых страниц.