给定一个具有如下 BindingSource 集的 DataGridView:
在 winform 上,我们使用设计器添加一个名为 myBindingSource 的 BindingSource 对象。然后在 Form.Designer.cs 上我们将它添加到 InitializeComponents()
myBindingSource.DataSource = typeof(MyLinq.Person); //Mylinq is the autogenerated Linq Model/Diagram
稍后,在表单本身中,我们执行以下操作:
myDataView.DataSource = myBindingSource;
然后我们有一个填充网格的方法……</p>
using ( myDataContext mdc = new MyDataContext() )
{
myDataView.DataSource = from per in mdc.person
select per;
}
顺便说一句,我已经在 Design Time 中设置了列,一切正常。由于 LINQ 2 SQL 没有返回 Anonymous,“myDataView”是可编辑的,问题来了……</p>
问题是:我如何坚持这些变化?
数据网格中有几十个事件,我不确定哪个更合适。即使我尝试其中一个事件,我仍然不知道我需要执行什么代码才能将这些更改发送回数据库以保持更改。
我记得在 ADO.NET DataSet 时代,你会做 dataadapter.Update(dataset);
还可以想象,retrieve 和 persist() 都在业务层上,方法签名如下所示:
public void LoadMyDataGrid(DataGridView grid);
该方法采用表单的网格并使用上面显示的 LINQ2SQL 查询填充它。
现在我想创建一个这样的方法:
public void SaveMyDataGrid(DataGridView grid); // or similar
这个想法是这个方法不在同一个类(表单)上,许多例子倾向于假设一切都在一起。