2016-04-06 9 views
-2

私はwinformアプリケーションでエンティティフレームワーク5を使用しています。私は私のデータベースからのデータを含む私のフォーム上にdatagridViewを持っています:エンティティフレームワーク5を使用して定期的にDBからデータを再読み込み/更新します

public partial class Form1 : Form 
{ 
    etudiantEntities cont = new etudiantEntities(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     cont.etudiant1.Load(); 

     etudiant1DataGridView.DataSource = cont.etudiant1.Local; 
    } 

今、すべてのものが完璧です。 他のフォームで更新が行われたときにデータをリロードします。定期的にリロードしたい。 エンティティフレームワークでこれを行う方法はありますか? ありがとうございました!

+0

「イベント」について聞いたことがありますか?これらは、WinFormsの基本的なビルディングブロックであり、アプリケーションで発生することを伝播するために使用されます。 – CodeCaster

+0

オープンフォームの更新されたデータを再読み込みする方法はわかりません。 –

+1

あなたの意見です! –

答えて

1

あなたは一度に5つの問題を抱えています。適切な答えを書くには本が必要です(とにかく読んでみることをお勧めします)。この答えは、あなたがもっと学ぶために使うことができる要約です。

まず、を「他のフォームで更新が行われたとき」について詳しく説明する必要があります。この変更を検出する必要があります。それを行う方法は、そのフォームの仕組みに依存します。データバインディングとINotifyPropertyChangedRaise an event whenever a property's value changed?を参照)を使用してください。

これらの「他のフォーム」では、モデルのPropertyChangedイベントを購読し、それを各フォームのイベントとして伝播します。適切な場合には、退会するようにしてください。フォームのPropertyChangedイベントハンドラでは、そのフォームに固有のイベント(たとえば、MyModelChanged)を発生させます。

これで、イベントを購読することで、イベントを関係者に通知できるようになりました。このような

何か:

var yourEditForm = new YourEditForm(); 
yourEditForm.MyModelChanged += this.YourEditForm_MyModelChanged; 
yourEditForm.Show(); 

は今、あなたは、このコードを配置場所はかなり重要です。複数のフォームを使って作業したい場合、アプリケーションに関連するすべてのフォームとそのイベントを知っているすべてのフォームとイベントを知っているすべてのフォームとイベントを知っている何らかの「コントローラ」(またはその名前を付けてください)が必要です。

あなたのコントローラであなたが今、上記のコードと、このイベントハンドラ持っているので:そのイベントハンドラで今すぐ

private void YourEditForm_MyModelChanged(object sender, EventArgs e) 
{  
} 

を、あなたは適切な名前せることができますForm1そのデータをリロードします。これを行う公開方法を公開すると、公開方法を公開できます。

public void RefreshGrid() 
{ 
    cont.etudiant1.Load(); 
    etudiant1DataGridView.DataSource = cont.etudiant1.Local; 
} 

「リフレッシュ」があります。上記のイベントハンドラでform1.RefreshGrid()に電話をかけることができます。

これはすべてかなりハッキングされていることに注意してください。 WinFormsのデータバインディングについてのチュートリアルまたは2つを読んで、これを適切に処理できるようにしてください。手動で行うことは、維持するのが苦痛になるためです。

MSDNでData Binding and Windows FormsChange Notification in Windows Forms Data Bindingを読むことから始められます。

関連する問題