2017-12-07 5 views
1

私のWindowsフォームアプリケーションには少し問題があります。 2つのフォーム:親フォーム - ここに私は会社のリストを提示するDataGridViewを持っています。ここから、選択した会社を追加または編集できる別のフォームCompanyFormを開くことができます。追加オプションはうまく動作しますが、会社を編集して変更を破棄したい場合は、親フォームで選択した行が変更されましたが、自分のコンテキストで変更を保存しません。誰かが私を助けることができますか?DataGridView BindingSourceでの変更をEFに破棄

ParentForm:

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(); 
    } 

CompanyForm:あなたが見ることができるように

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

が、私はのBindingSourceを使用して、私はそれなぜグリッドを知りません自動的に更新されました。

+0

変更を破棄したいときは、 'yourGridView.CancelEdit();'を試してください – CodingYoshi

+0

答えをありがとう。 To buttonEditCompany_Click私はcompanyDataGridView.CancelEdit()を追加しました。動作しません。変更後...会社名の例とキャンセルボタンを押す - グリッドが更新されました。 –

+0

Usnig /バインディングソースを使用しないで、参照タイプの性質を変更しません。 [リンクされた投稿](https://stackoverflow.com/q/38187441/3110834)を見てください。 –

答えて

0

EDIT:間違った質問に回答しました。私にそれを指摘してくれてありがとう@Reza Aghaei。

バインドにMode=TwoWayを使用している場合は、UpdateSourceTrigger=Explicitを設定して、変更を保存するときにはUpdateSource()を呼び出してみてください。

+0

質問はWindowsフォームについてです。 –

+0

おっと、私の答えを編集してそれに注意してください。脳はWPFモードで立ち往生しました。 – borscht

関連する問題