【问题标题】:Discarding changes with a DataGridView BindingSource to EF [duplicate]将 DataGridView BindingSource 的更改丢弃到 EF [重复]
【发布时间】:2017-12-07 23:27:28
【问题描述】:

我的 Windows 窗体应用程序有一点问题。 两种表格:父表格 - 这里我有 DataGridView,它显示公司列表。从这里,我可以打开另一个表单,CompanyForm,您可以在其中添加或编辑选定的公司。添加选项工作正常,但是当我编辑公司并想要放弃更改时,在父表单上选择的行已更改,尽管我没有在我的上下文中保存更改。有人可以帮助我吗?

父窗体:

private void CompaniesForm_Load(object sender, EventArgs e)
    {
        using (var connect = new ContactEntities())
        {
            companyBindingSource.DataSource = connect.Companies.ToList();
        }
    }

按钮编辑公司:

private void buttonEditCompany_Click(object sender, EventArgs e)
    {
        CompanyForm company = new CompanyForm();
        company.MdiParent = this.MdiParent;
        company.Company = (Company)companyBindingSource.Current;
        company.Show();
    }

公司形式:

public Company Company { get; set; }    
private void CompanyForm_Load(object sender, EventArgs e)
        {
            using (var connect = new ContactEntities())
            { 
                companyBindingSource.DataSource = Company;
            }
        }

如您所见,我使用的是 bindingsource,但我不知道为什么 grid 会自动更新。

【问题讨论】:

  • 当您想放弃更改时,请尝试yourGridView.CancelEdit();
  • 感谢您的回答。到 buttonEditCompany_Click 我添加了 companyDataGridView.CancelEdit();但不起作用。更改后...公司名称示例并按取消按钮 - 网格已更新。
  • Usnig/不使用绑定源,不会改变引用类型的性质。看看linked post
  • 感谢您的回答。我尝试通过将数据从数据库重新加载到绑定源来做到这一点,但我不知道这是否是一个好方法......有人可以帮助我吗?

标签: c# winforms entity-framework bindingsource


【解决方案1】:

编辑:回答错误的问题。感谢@Reza Aghaei 向我指出这一点。

只是猜测,但如果您在绑定中使用Mode=TwoWay,请尝试设置UpdateSourceTrigger=Explicit,并在保存更改时调用UpdateSource()

【讨论】:

  • 问题是关于 Windows 窗体的。
  • 糟糕,编辑了我的答案以说明这一点。 Brain 卡在 WPF 模式下。
猜你喜欢
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 2017-08-30
  • 2023-03-03
相关资源
最近更新 更多