Отменить изменения в DataGridView? - PullRequest
0 голосов
/ 29 января 2009

У меня есть элемент управления DataGridView в приложении winforms, над которым я работаю.

Источник данных установлен в IQueryable, который я получаю от нашего уровня обслуживания:

dataGridView1.DataSource = (from c in _customerService.GetAll() select c);

В примере, над которым я работаю, у меня есть кнопка отмены, которую я хочу использовать для отмены изменений. Если они нажимают кнопку отмены, я не вызываю DataContext.SubmitChanges () и закрываю форму. Однако когда я снова открываю форму, данные, отображаемые в DataGridView, отражают изменения, которые я сделал в предыдущей форме перед нажатием отмены.

Когда я закрываю программу и запускаю ее снова, все в порядке. Поэтому я считаю, что я изменяю данные в коллекции, связанной с DataGridView.

Конечно, есть очевидное решение для этого, и мое незнание winforms показывает (это мой первый удар в любых winforms.)

Есть ли какие-либо предложения по отмене изменений в представлении данных?

Спасибо за помощь!

Ian

1 Ответ

0 голосов
/ 29 января 2009

Полагаю, вам придется снова обратиться к базе данных, чтобы получить данные. Это означает, что если вы обнаружите, что пользователь решил отменить свои изменения, вам придется вернуться в базу данных и получить новый IQueryable. Из-за того, как работает Linq to Sql, вы можете перечислить коллекцию только один раз. Поэтому, если вы хотите просто вернуться к изменениям, вы не можете, потому что он не может перечислить его снова.

Лично я бы, вероятно, не использовал DataGridView, чтобы позволить пользователю вносить изменения напрямую. Я всегда чувствовал, что я не так контролирую себя. Возможно, у меня будет какая-то форма ввода, где пользователь может либо вводить новые данные, либо редактировать существующие записи, вместо того, чтобы дать им возможность напрямую редактировать сетку, которая непосредственно редактирует базу данных.

...