Id get all the data in one DataSet, 3 separate DataTables. You can define relationships in a DataSet between your parent/child tables. If you bind correctly (check the help on binding parent/child tables or relationships), moving a row in one table will automatically update the binding in the child table(s).
You could also do what you want manually. Hook an event to the currencymanager (I think, I cant remember which object/even you need - its positionchanged I think). When the position in the parent table changes, you could create a filtered DataView on your child table and bind your textboxes (or whatever) to that. If you need a third level, hook to the first childs position changed event and ... well, you get it.
You might very well be able to do what you want without writing any special filtering code - Id check out the DataBindings collections and remember that you can bind to a DataTable, DataView, and a relationship (which might be what you want/need).
-Nerseus