Есть ли способ остановить myDataSet.HasChanges (), возвращая true, если единственное изменение - это новая строка? - PullRequest
0 голосов
/ 23 июня 2018

У меня есть Button на моем Form, который при нажатии вызывает myBindingSource.AddNew(). Элементы управления, относящиеся к установке значений в этой новой строке, становятся видимыми.

При событии закрытия этого Form я звоню myDataSet.HasChanges() и, если он возвращает True, я запрашиваю пользователя, хотят ли они сохранить внесенные изменения.

В ситуации, когда Пользователь щелкает, чтобы добавить новую строку, но затем закрывает Форму (по какой-либо причине) без установки каких-либо значений, myDataSet.HasChanges() вернет True, очевидно, потому что происходит добавление новой строки.

Мне бы хотелось, чтобы он возвращал False, если единственное изменение - это новая строка.

Я пытался позвонить myBindingSource.EndEdit(), затем myDataSet.AcceptChanges сразу после myBindingSource.AddNew(), но myDataSet.HasChanges() все еще возвращает True.

Я подумал, что, позвонив по номеру myDataSet.AcceptChanges(), это, по сути, сотрет шифер, и только те изменения, которые были сделаны после этой точки, будут обнаружены.

Или, в качестве альтернативы, если есть лучший подход к этому, я бы хотел услышать это.

Мне очень нравится идея сохранения только в DataBase за один раз при запросе сохранения, вместо вставки новой строки в Button.Click и обновления этой строки при каждом изменении значения.

1 Ответ

0 голосов
/ 24 июня 2018

Чтобы быть более точным, чем мой комментарий:

If myDataSet.HasChanges(DataRowState.Deleted Or DataRowState.Modified) Then
...