编辑和提交DataGridView单元格更改(绑定到对象列表)

时间:2014-02-25 09:32:56

标签: winforms data-binding datagridview .net-4.5

我有一个Windows窗体应用程序,里面包含一个DataGridView。 DataGridView从DataSource填充,这是一个MyClass列表。 MyClass包含一组属性和一个像这样的构造函数:

public class MyClass
{    
    public PropertyA{get;set};
    public ProppertyB{get;set;}
    public ProppertyC{get;Set}
}

然后在Main表单中,我有一个返回List myCollection的方法和一个用“myCollection”填充DataGridView的按钮,如下所示:

private void btlLoadDataInDataGrid_Click(object sender, EventArgs e)
{                   
    var headers = GetAllHeaders();//GetAllheaders returns a List<MyClass>
    dataGridView1.DataSource = headers;
}

我得到的是一个DataGridView,其中包含原始MyClass中的列。  现在,我希望能够编辑DataGridView中的数据,并将此更改提交到MyClass属性的实际列表。有人可以建议一下这样做的最佳方法吗?

1 个答案:

答案 0 :(得分:2)

编辑将DataSource设置为对象列表并更改任何单元格值的网格时,行中的基础数据会自动更新。在您的情况下,基础行数据的类型为MyClass

在任何时候,您都可以使用DataGridView.DataBoundItem属性获取更新的行数据。

示例代码:

foreach(DataGridViewRow item in dataGridView1.Rows)
{
    MyClass rowData = item.DataBoundItem as MyClass;
    if(rowData != null)
    {
        // Do your stuff
    }
}

从数据库填充网格时,数据提交逻辑会有所不同。您必须编写代码以将更改的数据提交到数据库。