views:

285

answers:

2

I've got some legacy dataset code which I'm updating. I'm attempting to determine if the dataset has changes to it so I can properly prompt for a save request. However myDataset.HasChanges() always returns true.

In my save method I've edited the code to determine when the dataset get's changes and made the code like this:

1. myBindingSource.EndEdit()
2. myTableAdapter.Update(myDataSet)
3. myBindingSource.EndEdit()

After line 1, - myDataSet.HasChanges = true (understandable)
After line 2, - myDataSet.HasChanges = false (understandable)
After line 3, - myDataSet.HasChanges = true

I'm unsure of why this would occur in line 3, shouldn't this be false because I just ran the updates on the dataset?

A: 

Does your TableAdapter refresh your DataSet? If it does, then you probably have something like a key getting initialized (remember, GUID==good, Int==bad). It's just like when you fill from a TableAdapter you need to call AcceptChanges to reset the state of all of the rows to unchanged.

Payton Byrd
Nathan Koop
+1  A: 

There may be an UI element causing a value to change within the dataSet/dataTable.

Try your code in a simple consoleApplication without any DataBinding.

Pilgerstorfer Franz
There are databound items that fired off events that "changed, but didn't change" data
Nathan Koop