We used XtraReports exclusively in our application and have several parent-child-grandchild ... reports.The easiest way I found was by using BusinessBindingSource Objects that instantiated a new BusinessObject of whichever type was needed for that Object, dropping those on the report form, and manipulating them on the Report via the DataSourceRowChanged Event.
Using this approach got us away from having to build datasources from the underlying data.
I can create a quick sample if you want one.
Robin Giltner