【问题标题】:Manually set the properties of new objects created from datagridview手动设置从 datagridview 创建的新对象的属性
【发布时间】:2015-04-01 03:54:21
【问题描述】:

前提:我有一个“用户”类,它有一个列表类型的属性来表示与用户关联的“办公室”列表。

我有一个与“Office”列表相关联的 BindingSource,其中网格被钩住以插入新元素。

似乎一切正常,当我单击新行并在列表中写入一个值时,将添加到新对象“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

但这对我来说是在我的对象“办公室”被添加到列表之前调用的,我无法设置默认值。

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

【问题讨论】:

  • 为什么不能在 Office 类中添加一个属性Guid guid=Guid.NewGuid();
  • 已经有了,我生成了实体框架,问题不在于如何设置 guid ,而在于如何设置自动生成网格视图的对象的属性值

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


【解决方案1】:

如果属性“guid”是从实体框架生成的,那么您可以添加一个部分类,例如:

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

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

【讨论】:

  • 感谢回复,我已经创建了部分类,问题是我不知道构造函数在创建新对象时使用了gridview。我还需要检查实体框架是否允许在部分类中定义构造函数。显然在 guid 上我还有其他属性要设置
  • 部分类中的构造函数有效,我刚刚检查了我正在处理的项目中
  • 今晚我可以检查当我实例化一个新对象“Office”时gridview是否进入默认构造函数;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 2016-04-29
  • 2019-02-01
  • 1970-01-01
相关资源
最近更新 更多