You can use this approach when a physical database does not supply a report's data. This may be necessary, for example, in a multi-tier application where the data layer is separated from the presentation layer, and it is only possible to bind a report to some .NET objects.
You do not need to specify the report's XtraReportBase.DataMember property when binding to a list containing plain data (a non-normalized list).
Each record in such list is an object whose public properties are treated as individual data fields and whose property values become field values. Do the following to supply your report with data created at runtime:
Declare a class whose instances should represent individual data records. This class's public properties are treated as data fields.
When you do not need to create a custom list object, you can use an existing object implementing any of these interfaces. For instance, a ArrayList object can serve as the report's data source, so this step is optional.
Create a new list instance and fill it with records.