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

时间:2015-02-02 08:34:46

标签: c# winforms entity-framework data-binding datagridview

前提:我有一个“User”类,它有一个list类型的属性来表示与用户关联的“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自动手动设置添加到列表的对象属性的值?

1 个答案:

答案 0 :(得分:1)

如果从实体框架生成属性“guid”,则可以添加部分类,例如:

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

并添加一个构造函数,在创建新办公室时填充guid属性。