将DataGridView与IList <t>绑定,编辑然后只保存更改?</t>

时间:2012-05-19 04:31:16

标签: c# winforms data-binding datagridview datatable

我有以下服务类:

public class MyService 
{
    List<MyModel> GetData() { .... }
    void Save(List<MyModel> changedRows) { .... }
}

是否可以将DataGridView的数据源绑定到myService.GetDate()返回的列表;然后用户在DataGridView中编辑并单击“SaveAll”按钮通过调用函数myService.Save(???)来提交所有更改?

是否可以获取已更改行的列表并将其传递给myService.Save(list)

这似乎是一个常见问题,但我找不到太多信息。我使用了错误的方法吗?

1 个答案:

答案 0 :(得分:1)

我能想到的情侣选择:

1)您可以将MyModel类包含在MyModelView类中,该类包含MyModel属性和Status枚举属性(插入,更新,删除)。获得List<MyModel>后,您可以创建并填充List<MyModelView>并将该新列表绑定到datagridview。用户每次编辑行时,都会根据用户操作(插入,更新,删除)更新Status属性。请注意,这还需要为已删除的行filtering做一些额外的工作,因为您可能不希望显示已删除的行。

2)您将List<MyModel>直接绑定到datagridview,但是有一个单独的List<MyModelView>只包含已更改的行。只要有变更,您就可以跟踪此单独列表中的更改。