我正在尝试编写标题详细信息表单。在 VS2010 C# Winforms 中。
该表单绑定(bind)到具有名为 Attendees 的属性的 Entity Framework 类
使用名为 bindingSource1
的 BindingSource
控件。
网格通过 datasource = bindingSource1
和 DataMember = Attendees
BindingSource
控件
我正在使用代码优先 EF。实体类是
public class ContactEvent
{
public int Id { get; set; }
public string Title { get; set; }
private readonly BindingList<ContactEventAttendee> _attendees = new BindingList<ContactEventAttendee>();
public virtual BindingList<ContactEventAttendee> Attendees
{
get { return _attendees; }
}
}
我使用设计器设置列,删除所有不需要的列。一旦我保存表单并重新打开它,我不想要的列又回来了
我看过here并尝试了该技术 - 但它无济于事。无论如何 - 我的问题在设计时出现。
仅当我删除所有绑定(bind)列时才会出现此问题。因为我所有的专栏都是未绑定(bind)的,所以这就是我想要的。
ContactEventAttendee类如下;
public class ContactEventAttendee : ILoggedEntity
{
public int Id { get; set; }
public Guid RowId { get; set; }
[ConcurrencyCheck]
public int RowVersionId { get; set; }
public int SourceSiteNumber { get; set; }
public virtual ContactEvent ContactEvent { get; set; }
public virtual Person Person { get; set; }
}
我在另一个相关类(class)中也遇到了同样的问题。 如果我从表单中删除 bindingNavigator,问题就会消失
数据来源为
最佳答案
试一试。
public class ContactEvent
{
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<ContactEventAttendee> ContactEventAttendees {get; set;}
}
编辑
好的,当我尝试创建一个项目并将带有 Class
的 DataSource
设置为 DataGridView
时,我遇到了确切的问题,这另一个奇怪的错误?好吧,我们真的不知道,但这是我的解决方案。
- 将您的
EntityCodeFirst
分离到另一个Class Project
中,并在每次进行更改时重新构建它。 - 在您的主项目中,只需添加到
Reference
中,请参见下图: - 现在在您的
DataGridView
中选择带有Object
的 DataSource
现在,尝试删除所有列并重新构建它。
编辑:我的示例引用
public class ContactEvent
{
public int Id { get; set; }
public string Title { get; set; }
public ICollection<ContactEventAttendee> _attendees { get; set;}
}
public class ContactEventAttendee
{
public int Id { get; set; }
public Guid RowId { get; set; }
public int RowVersionId { get; set; }
public int SourceSiteNumber { get; set; }
public virtual ContactEvent ContactEvent { get; set; }
}
关于c# - 当有绑定(bind)导航器时,如何在设计时停止 winforms 中的 datagridview 自动生成列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173612/