C# 如何在没有SQLAdapter的情况下使用DatagridView进行更新

C# 如何在没有SQLAdapter的情况下使用DatagridView进行更新,c#,windows,forms,C#,Windows,Forms,我正在为其中一个网页创建后端。后端是C#中的Windows窗体 我有一个业务对象PaymentExpected: public class PaymentExpected { public int ID { get; set; } public int JoiningID { get; set; } public int AccountID { get; set; } ..... public List<PaymentExpected> Load_All() { .... }

我正在为其中一个网页创建后端。后端是C#中的Windows窗体

我有一个业务对象PaymentExpected:

public class PaymentExpected 
{
public int ID { get; set; }
public int JoiningID { get; set; }
public int AccountID { get; set; }
.....
 public List<PaymentExpected> Load_All()
{
 ....
}
现在我想在单击“更新”按钮后保存更新,但我不想在使用业务对象时使用SQL适配器

所以我需要一些方法来获取更改并调用更新。(我通常会这样更新:)


但我不确定如何使用datagridview实现这一点?

为什么您不能在代码中保留对“paymentsExpected.Load_All()”数据源的引用,并从按钮单击事件调用paymentExpected.Save()?

嗨,我不太确定您的意思是什么?如何将更新后的值传递给要保存的对象()?您正在进行数据绑定,因此更改应该已经存在于绑定对象中。从您的示例中,我猜您希望对绑定到datagridview的项调用Save()。太好了!我没有意识到它是绑定的,我所做的任何动作都会影响列表。但是现在我明白了。但是,下一个问题,有没有一种方法可以获得已经更改的确切对象,而不是遍历所有对象并执行.save()?我认为您可以比我更好地回答这个问题,这实际上取决于您对持久性的实现。如果您的BusinessObject具有某种IsDirty属性,您可以使用它。我认为您可以自动完成的唯一方法是使用一些AOP/拦截器逻辑,并在触摸属性时将对象标记为脏对象。使用ORM或Castle ActiveRecords或其他为您完成任务的工具。你应该仔细阅读关于持续无知的文章。
DG_View.DataSource = paymentExpected.Load_All();
paymentExpected.ID = 1;
paymentExpected.JoiningID = 1;
paymentExpected.AccountID = 1;
paymentExpected.Save();