c# - 当有绑定(bind)导航器时,如何在设计时停止 winforms 中的 datagridview 自动生成列?

标签 c# winforms datagridview entity-framework-5

我正在尝试编写标题详细信息表单。在 VS2010 C# Winforms 中。 该表单绑定(bind)到具有名为 Attendees 的属性的 Entity Framework 类 使用名为 bindingSource1BindingSource 控件。 网格通过 datasource = bindingSource1DataMember = Attendees

绑定(bind)到另一个 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,问题就会消失

数据来源为

here

最佳答案

试一试。

public class ContactEvent
{
    public int Id { get; set; }
    public string Title { get; set; }

    public virtual ICollection<ContactEventAttendee> ContactEventAttendees {get; set;}
}

编辑

好的,当我尝试创建一个项目并将带有 ClassDataSource 设置为 DataGridView 时,我遇到了确切的问题,这另一个奇怪的错误?好吧,我们真的不知道,但这是我的解决方案。

  1. 将您的 EntityCodeFirst 分离到另一个 Class Project 中,并在每次进行更改时重新构建它。
  2. 在您的主项目中,只需添加到 Reference 中,请参见下图:enter image description here
  3. 现在在您的 DataGridView 中选择带有 Object 的 DataSource enter image description here

现在,尝试删除所有列并重新构建它。

编辑:我的示例引用

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/

相关文章:

c# - 如何在MVC中写入文本文件

c# - 如何在 ConfigurationElement 中包含 CDATA 部分?

c# - 拖放移动控件而不是复制

c# - 如何读取另一个应用程序的数据 GridView

c# - DataGridView - 设置对象在列中的显示值

c# readonly DataGridView 与一个启用的单元格

c# - rpc\\literal SOAP 不支持 namespace 。包装器元素必须是不合格的

javascript - 如何从 MVC 中的 Controller 下载由 html2canvas 创建的字节形式的图像(在浏览器中显示保存对话框)?

c# - 禁用 GeckoFX 确认消息

c# - 多个线程向 ListBox 添加和删除项目