Я никогда не был фанатом гридов, вместо этого я использую повторители / списки, и для каждой строки у меня есть UserControl, который отвечает за отображение данных строки, и дополнительные повторители для под-данных.
Крошечный пример:
<asp:repeater id... runat...>
<itemtemplate>
<uc1:MyRowControl id... runat... OnSomeEvent='MyRowHandler' Model='<%# (MySubData)Container.DataItem %>'
</itemtemplate>
</asp:repeater>
и так внутри. С событиями легко справиться, когда вам это нравится.