2010-03-12 1 views
1

У меня есть код устаревшего набора данных, который я обновляю. Я пытаюсь определить, имеет ли набор данных изменения, поэтому я могу запросить запрос на сохранение. Однако myDataset.HasChanges() всегда возвращает true.DataSet.HasChanges верен даже сразу после запуска TableAdapter.Update

В моем методе экономии я редактировал код, чтобы определить, когда изменения набора данных GET и сделал такой код:

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

После линии 1, - myDataSet.HasChanges = истинный (понятный)
После линии 2, - myDataSet.HasChanges = лОЖЬ (понятно)
После линии 3, - myDataSet.HasChanges = истина

Я не уверен, почему это будет происходить в линии 3, не это должно быть ложным, потому что я просто запустили обновления в наборе данных?

ответ

1

Может существовать элемент пользовательского интерфейса, вызывающий изменение значения в пределах dataSet/dataTable.

Попробуйте использовать свой код в простой консоли. Применяется без привязки данных.

+1

Есть элементы данных, которые активировали события, которые «изменили, но не изменили» данные –

+0

@NathanKoop Вы выяснили, исправить? У меня такая же проблема. – styfle

+1

Если я правильно помню (это было несколько лет назад), я считаю, что у меня было событие Textbox.OnChange, и это изменило бы некоторые другие текстовые поля, которые затем изменили бы набор данных. –

1

Обновлен ли ваш TableAdapter ваш DataSet? Если это так, то у вас, вероятно, есть что-то вроде инициализации ключа (помните, GUID == good, Int == bad). Это точно так же, как когда вы заполняете из TableAdapter, вам нужно вызвать AcceptChanges, чтобы восстановить состояние всех строк без изменений.

+0

Я не уверен, обновили ли данные TableAdapter данные. Все, что он делает, это ОБНОВЛЕНИЕ ... WHERE id = @myId; Я попытался добавить AcceptChanges там (между строками 2 и 3), и я все равно получил тот же результат. Я использую int (не мой дизайн db, и я не могу его изменить). Там также не должно быть никаких инициализированных ключей, в ситуации, которую я тестирую, я загружаю форму (тонны данных и т. Д. ...), а затем нажмите кнопку сохранения без изменения каких-либо данных, и это происходит. –