Как обновить с помощью DataGridView без SQLAdapter

#c# #windows #forms

#c# #Windows #формы

Вопрос:

Я создаю серверную часть для одной из веб-страниц. Серверная часть представляет собой форму Windows на C #.

У меня ожидается оплата бизнес-объекта:

 public class PaymentExpected 
{
public int ID { get; set; }
public int JoiningID { get; set; }
public int AccountID { get; set; }
.....
 public List<PaymentExpected> Load_All()
{
 ....
}
  

И чтобы заполнить мой DataGridView, я просто делаю:

 DG_View.DataSource = paymentExpected.Load_All();
  

теперь я хочу, чтобы обновления сохранялись после нажатия кнопки «Обновить», но я не хочу использовать адаптер SQL, поскольку я использую бизнес-объекты.

Итак, мне нужен какой-то способ получить изменения и вызвать обновление. (Который я обычно обновляю следующим образом:)

 paymentExpected.ID = 1;
paymentExpected.JoiningID = 1;
paymentExpected.AccountID = 1;
paymentExpected.Save();
  

Но я не уверен, как это сделать с помощью datagridview?

Ответ №1:

Почему вы не можете просто сохранить ссылку на «Ожидаемые платежи.Источник данных Load_All()»в исходном коде и ожидаемая оплата вызова.Сохранить () из события нажатия кнопки?

Комментарии:

1. Привет, я не совсем уверен, что ты имеешь в виду? Как мне передать обновленные значения объекту для сохранения()?

2. Вы привязываете данные, поэтому изменения уже должны быть внесены в связанный объект. Из вашего примера я предположил, что вы хотели вызвать Save() для элементов, привязанных к datagridview.

3. Отлично! Я не понимал, что это было привязано, и любые действия, которые я выполнял, повлияли бы на список<BusinessObject> . Но теперь я вижу, что это так.

4. Однако, следующий вопрос, есть ли способ, которым я могу получить точный объект, который был изменен, вместо перебора всех объектов и выполнения .save()?

5. Я думаю, вы можете ответить на этот вопрос лучше меня, это действительно зависит от вашей реализации сохранения. Если у вашего BusinessObject есть своего рода свойство IsDirty, вы можете использовать это. Единственный способ, которым, я думаю, вы можете сделать это автоматически, — это использовать некоторую логику AOP / interceptor и помечать ваши объекты как грязные, если затронуто свойство. Используйте ORM или Castle ActiveRecords или что-то еще, что сделает эту работу за вас. Вам следует прочитать о незнании сохранения.