 <p>In case anyone ends up running into a similar situation, here was my solution: </p> <p>First to explain my datasets:</p> <pre><code>public Foo { string a; List&lt;Bar&gt; subInfo; } public Bar { string b; string c; } List&lt;Foo&gt; allFoos; </code></pre> <p>Basically instead of having the allFoos object that I passed to a master report, and then trying to pass the corresponding Bar object to the subReport, I created a new object:</p> <pre><code>Public FooBar { string a; string b; string c; } List&lt;FooBar&gt; allFooBars; </code></pre> <p>So basically I flattened the data. From there I created a single report. I added one table that had "FooBar" as it's DataSet, and passed in the collection of "allFooBars." I also created a footer on the report, so that I would have consistent paging across all pages. I then used grouping to keep "Foo" objects together. On the groups I set the "Page Break at start" and "Include Group Header" and "Repeat Group Header" options to true. Then I just set up the Group Headers to fake being my Page Headers along with group headers (basically just 5 lines of Group Headers, one of which was blank to provide some space).</p> <p>And that was basically it.</p>