I think you will have to dynamically subscribe and unsubscribe to the child table''s ListChanged event for each parent node in RowExpanding and RowCollapsing. Then you can maintain a hastable of these child tables and the location of their parentrows. Then in the ListChanged handler, you can retrieve the parent row and use the e.NewIndex to determine the grid row that needs refreshing. (Note that when a parent row collapses, you may have to adjust the row values in the hashtable.)
Here is a minimal sample that seems to be working ok. As you press the button on the form, a different child row is modified, and only that child row is refreshed.
UpdateChild_7608.zip