【问题标题】:Binding DataGridView with IList<T>, edit and then save only the changes?将 DataGridView 与 IList<T> 绑定,编辑然后只保存更改?
【发布时间】:2012-05-26 14:22:43
【问题描述】:

我有以下服务等级:

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

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

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

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

【问题讨论】:

  • DataTable 具有捕捉变化的功能。也许构建另一层将List&lt;MyModel&gt; 转换为DataTable,然后将其转换回List&lt;MyModel&gt;myService.Save

标签: c# winforms data-binding datagridview datatable


【解决方案1】:

我能想到的几个选项:

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

2) 您将List&lt;MyModel&gt; 直接绑定到datagridview,但有一个单独的List&lt;MyModelView&gt;,它只包含更改的行。任何时候有变化,你都会在这个单独的列表中跟踪变化。

【讨论】:

    猜你喜欢
    • 2012-10-25
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2020-03-20
    相关资源
    最近更新 更多