I have a DataGridView bound to a bindingsource which is bound to a List<T>
. The user clicks a row that goes to a form with textboxes, etc. The textboxes are databound like so:
if (txtID.DataBindings.Count == 0)
txtID.DataBindings.Add("Text", bindingSource, "Title");
I want to be able to detect if the user has modified any data in the controls when they click the close button, so I can prompt them to say "You have un-saved work. Do you want to Save?"
How do I detect this on the binding source?
UPDATE: I have worked out that I can do bindingSource.EndEdit()
which pushes the changes to my item in the list. In my item, I can then say if Dirty throw a Messagebox but if they click "No" to saving the information, the CancelEdit does not work.
If your object within the List support the INotifyPropertyChanged
event and you replace the List<T>
by a BindingList<T>
you can subscribe to the ListChanged
event of the BindingList to get informed about any changes made by the user.
If you're bound to a DataSet then you're in luck: it has a HasChanges Property. You can get the actual changes by calling GetChanges on the dataset. This returns a new dataset containing a copy of all changed rows
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With