手动设置从 datagridview 创建的新对象的属性

Manually set the properties of new objects created from datagridview

前提:我有一个 class "User",它有一个 属性 类型的列表来表示与用户关联的 "Office" 列表。

我有一个 BindingSource 关联到 "Office" 的列表,其中挂钩网格以插入新元素。

一切似乎都正常工作,当我点击新行并在列表中写入一个值时,新对象被添加 "Office"

问题是,除了用户输入的数据外,我还想自动插入一些默认值(例如:guid),我知道我可以在网格中使用隐藏列来做到这一点,但我确实这样做了不太喜欢解决方案,我想直接在对象上工作。

我试过这个活动

DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.databindingcomplete%28v=vs.110%29.aspx

这是在新对象 "office" 添加到列表后调用的,但我无法恢复它,因为我不知道插入了哪一行,但只有一个通用词 "ItemAdded"

我也试过使用方法

DefaultValuesNeeded(object sender, System.Windows.Forms.DataGridViewRowEventArgs e)

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.defaultvaluesneeded%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

但这对我来说是在我的对象 "office" 之前调用的,我被添加到列表中,但我无法设置默认值。

长话短说:如何在不使用隐藏列的情况下手动设置从 gridview 自动添加到列表的对象的属性值?

如果属性 "guid"是从Entity Framework生成的,那么你可以添加部分class如:

public partial class Office
{
   public Office()
   {
        guid=Guid.newGuid();
   }
}

并在那里添加一个构造函数,每当创建一个新办公室时,它就会填充 guid 属性。