我有一个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属性的实际列表。有人可以建议一下这样做的最佳方法吗?
答案 0 :(得分:2)
编辑将DataSource
设置为对象列表并更改任何单元格值的网格时,行中的基础数据会自动更新。在您的情况下,基础行数据的类型为MyClass
。
在任何时候,您都可以使用DataGridView.DataBoundItem
属性获取更新的行数据。
示例代码:
foreach(DataGridViewRow item in dataGridView1.Rows)
{
MyClass rowData = item.DataBoundItem as MyClass;
if(rowData != null)
{
// Do your stuff
}
}
从数据库填充网格时,数据提交逻辑会有所不同。您必须编写代码以将更改的数据提交到数据库。