You have two possibilities to bind data to the subreport.
The SubReport item placed in the Master report raises NeedDataSource event if the underlining report has DataSource property set to null. As you already explain, SubReport items has not property DataSource. It is a plain report item and its main purpose is to act as a proxy to the underlining report.
You can write handler similar to this:
Telerik.Reporting.Processing.SubReport subreportitem = (Telerik.Reporting.Processing.SubReport)sender;
// subreportitem.DataObject can be used here for retrieving data for the subreport
subreportitem.InnerReport.DataSource = <data for the subreport>
NeedDataSource handler is executed for every data row in the Master report.
Another way to accomplish this is to handle NeedDataSource of the report that is used as subreport. The handler may look similar to this:
Telerik.Reporting.Processing.Report report = (Telerik.Reporting.Processing.Report)sender;
Telerik.Reporting.Processing.SubReport mastersubreportitem = (Telerik.Reporting.Processing.SubReport )report.Parent
// mastersubreportitem.DataObject can be used here for retrieving data for the report
report.DataSource = <data for the report>
Please note that we do not discuss how data is retrieved, only where and how it is assigned to the report's DataSource property.
the Telerik team