2010-11-23 13 views
0

Windowsアプリケーションが内部サーバーにアクセスし、フロントエンドアプリケーションからのユーザー要求に基づいてセットアップファイルを作成しています。DB内でテーブルが変更されたときに自動的にグリッドを更新する

1)フロントエンドアプリケーションからセットアップファイルを作成するようにサーバーに要求すると、テーブルに詳細が追加されます(req id = "101"、Status = "Started"など) これらのエントリが表示されますグリッドで

2)FIFO(キュー)に基づいてサーバーからの要求を処理し、セットアップファイルを作成します。セットアップファイルが作成されると、テーブルstatus = "Completed"に更新されます。

問題:要求のステータスをテーブル(サーバーで完了)に更新したら、フロントエンドアプリケーションのグリッドを更新する必要があります。

私はタイマーをフォームに入れてデータソースを更新したくありません。これを達成する他の方法はありますか?

私のC#のプログラム

public DataTable GetCustomPatchGridDatasource(string Requesteduser) 
     { 
      try 
      { 
       dbConn = new DBConnection(); 
       myconn = dbConn.CreateConnection(); 
       myCommand = new SqlCommand(); 
       myCommand.CommandText = "sp_Patch_GetPatchDetails"; 
       myCommand.CommandType = CommandType.StoredProcedure; 
       myCommand.Parameters.Add(new SqlParameter("@RequestedUserEmail", Requesteduser)); 
       myCommand.Connection = myconn; 
       myDatatadapter = new SqlDataAdapter(myCommand); 
       datatable = new DataTable(); 
       myDatatadapter.Fill(datatable); 
       dbConn.CloseConnection(); 
       return datatable; 
      } 
      catch (Exception ex) 
      { 
       dbConn.CloseConnection(); 
       MessageBox.Show(ex.Message, "Message"); 
       return null; 
      } 
     } 

答えて

0

使用INotifyPropertyChangedのイベントで私のデータretrivalなステートメント。

0

トリガーを使用して、新しい行のファクトを特殊なログテーブルテーブルに出力することができます。次に、そのログ履歴テーブルに新しい行がある場合はtrueまたはfalseを返すWebサービスを作成できます。新しい行が処理された後、それらを削除することができます。 jQueryをタイマーとともに使用すると、Webサービスに呼び出すことができます。応答を取得し、Webサービスが返す内容に基づいてコントロールを更新します。もっと簡単なやり方があるかもしれませんが、明らかなパフォーマンス上の問題のためにメインテーブルを常に新しい行で監視することはありません。

関連する問題