Further to Randy's excellent suggestions, I have used other GridView components that take it one step further, and allow the "child" view to be any datasource unrelated to the parent. They do this by letting you subscribe to something like an "OnParentRowDataBound" event, where you can specify if
- That particular parent row has a child view or not
- The child view data source for that parent row
Of course this would only be an extra option for flexibility. For basic scenarios, you should just specify the child as being an IList/IEnumerable property of the parent, then the GridView should take care of the rest.