2010-11-23 16 views
0

Je demande à l'application Windows d'accéder au serveur interne et de créer le fichier d'installation en fonction de la demande de l'application frontale.Actualiser automatiquement la grille lorsque la table change dans la base de données

1) Lorsque nous demandons au serveur de créer le fichier d'installation depuis l'application frontale, nous ajoutons des détails dans la table (req id = "101", Status = "Started" et etc) et montrons ces entrées dans la grille.

2) Nous traitons la demande du serveur en fonction du FIFO (file d'attente) et créons le fichier d'installation. Une fois le fichier d'installation créé, nous le mettrons à jour dans la table status = "Completed".

Problème: Une fois que nous mettons à jour le statut de la demande dans la table (Terminé dans le serveur), nous devons actualiser la grille dans l'application frontale.

Je ne veux pas mettre le minuteur dans le formulaire pour actualiser la source de données. Y a-t-il un autre moyen d'y parvenir?

Mes données statment retrival dans mon C# programme

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

Répondre

0

Utilisation INotifyPropertyChanged événement.

0

Vous pouvez utiliser un déclencheur pour générer le fait d'une nouvelle ligne dans une table de table de journalisation spéciale. Vous pouvez ensuite créer un service Web qui renvoie true ou false s'il existe de nouvelles lignes dans cette table d'historique de journaux. Une fois les nouvelles lignes traitées, vous pouvez les supprimer et ainsi de suite. Vous pouvez utiliser jQuery avec timer pour ajouter un appel ajax dans votre service Web, obtenir une réponse et mettre à jour votre contrôle en fonction de ce que le service Web renvoie. Peut-être y a-t-il des façons plus faciles de faire cela aussi, mais je ne surveillerais pas constamment ma table principale pour de nouvelles lignes en raison de problèmes de performance évidents.