2010-11-23 3 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 한 Statment를.

0

트리거를 사용하여 새 행의 사실을 특수 로그 테이블에 출력 할 수 있습니다. 그런 다음 로그 기록 테이블에 새 행이 있으면 true 또는 false를 반환하는 웹 서비스를 만들 수 있습니다. 새 행을 처리 한 후에는 삭제할 수 있습니다. jQuery를 타이머와 함께 사용하면 웹 서비스로 아약스를 호출하고 응답을받으며 웹 서비스가 반환하는 것을 기반으로 컨트롤을 업데이트 할 수 있습니다. 더 쉬운 방법이있을 수도 있지만 명백한 성능 문제로 인해 새로운 행을 위해 메인 테이블을 지속적으로 모니터링하지 않습니다.

관련 문제