>>
As the "TechTip_Refreshing Dependent Parents.doc" points out, figuring out which nested component to signal from which event can be difficult (which is why I went for the "repaint everything in the container" approach).
But wouldn't a well engineered "workaround" for the DGV bug be along the lines... for the BO that I just RejectedChanges on, repaint all DGV's that are bound to the my properties (persistent and non-persistent)??
<<
Probably much more often than not, you'll be rejecting changes not on a single BO, but a whole slew of them, often including different types (Employees, Order, OrderDetails, etc.)
>>
I would hope the "subscribers / bound controls" of the UI can be determined by the BO's.
<<
With DevForce databinding, all the bindings to a type (e.g., Employee) are collected in the Descriptors (BindingDescriptors) collection of a BindingManager. So you could tell from that which UI controls are bound to the Employee you just undid (if that's all you undid).
I suppose you could write a method that iterates through all of the BindingManagers in a particular context (e.g., on a particular form), finds out what type they manage bindings for and what control or controls they manage bindings to, and then call Refresh() on the latter, but before I attempted to automate all of it I'd be sure just to step back and think about it. I'm a strong believer in keeping things as simple as possible. That means making sure your problem merits a solution of the complexity you're undertaking.