Understanding the report life cycle, what happens and when it happens, is crucial to effectively using Telerik Reporting.
The diagram shown below describes the sequence of stages from designing a report definition to producing a report document.
The following activities occur at each stage of the report life cycle:
The report definition is designed in a report designer. The act of designing the report produces a report definition that based on the used report designer is:
Report class for Visual Studio Report Designer. Depending on the used programming language the report class consists of the following files:
Visual C# class files - .cs and .Designer.cs
Visual Basic class files - .vb and .Designer.vb
Any report resources are stored in a .NET managed resource file (.resx)
XML (.trdx, .trdp, or .trbp) for Standalone Report Designer. The XML can be stored as:
TRDP - XML definition and resources packaged in a zip.
TRDX - plain XML format.
TRBP - report book (collection of report definitions) packaged in a zip.
The report definition is processed:
Performs all grouping, sorting and filtering calculations.
Evaluates all expressions in the report definition except those in the page header and page footer sections.
Binds the report definition to data from the available data sources.
Triggers item data binding event, item bindings, and item data bound event.
Produces a processing report.
The processing report is rendered to a report document:
The processing report is passed to a specific rendering extension (PDF, HTML, CSV, etc.).
The processing report is paged if the rendering format supports paging.
Expressions in the page header and page footer sections are evaluated for every page.
The report is rendered to a report document.
Following are the implications of the report life cycle including when and where you can use data fields, aggregate functions, page functions, and data items.
Report header, report footer, group header, and group footer sections - data fields in expressions should be used in conjunction with aggregate functions. If an expression specifies a data field without an aggregate function, the First() aggregate function is used by default. The First() function returns the first record of the data source for the specified data field.
Page header and page footer sections - expressions here are evaluated later in the report life cycle. The report paging is specific to the chosen rendering format and occurs during report rendering, while data binding occurs earlier during report processing. This means that expressions here cannot include data fields or aggregate functions. PageNumber and PageCount global objects are available only in these sections.