Partager via


Utilisation des solutions hors ligne

Le modèle objet InfoPath fournit la propriété MachineOnlineState de la classe Application qui active votre code de formulaire pour déterminer si l'ordinateur de l'utilisateur est connecté au réseau. En vérifiant la valeur de la propriété MachineOnlineState, votre code de formulaire peut effectuer différentes actions, selon l'état de la connexion.

Utilisation de la propriété MachineOnlineState

L'exemple suivant vous montre comment ajouter une logique au code de votre formulaire afin de déterminer comment le formulaire doit être envoyé, selon que l'ordinateur de l'utilisateur est connecté ou non.

Cet exemple suppose que vous avez créé un formulaire permettant d'envoyer un rapport des ventes qui contient un champ intitulé période qui spécifie le mois et l'année concernés par le rapport. Il part également du principe que vous avez défini une connexion de données et la logique d'envoi du rapport lorsque l'utilisateur est connecté.

Ajout d'une connexion de données qui envoie le formulaire en pièce jointe à un message électronique

  1. Créez un modèle de formulaire InfoPath utilisant du code managé.

  2. Dans InfoPath, en mode Création, cliquez sur Connexions de données dans le menu Outils.

  3. Dans la boîte de dialogue Connexions de données, cliquez sur Ajouter.

  4. Dans l'Assistant Connexion de données, cliquez sur Envoi des données, puis sur Suivant.

  5. Dans la page suivante de l'Assistant, cliquez sur En tant que message électronique, puis cliquez sur Suivant.

  6. Dans la page suivante de l'Assistant, tapez votre adresse électronique dans la zone À.

  7. Dans la zone de texte Objet, effectuez les opérations suivantes pour combiner la période de ventes avec le texte « Rapport de ventes » :

    1. Cliquez sur le bouton Formule en regard de la zone Objet.

    2. Dans la boîte de dialogue Insérer une formule, cliquez sur Insérer une fonction.

    3. Dans la boîte de dialogue Insérer une fonction, cliquez sur Texte dans la liste Catégories, puis double-cliquez sur concat dans la liste Fonctions.

    4. Remplacez la première instance de double-cliquer pour insérer un champ par 'Rapport de ventes : ' (avec des guillemets simples).

    5. Double-cliquez sur la deuxième instance de double-cliquer pour insérer un champ.

    6. Dans la boîte de dialogue Sélectionner un champ ou un groupe, sélectionnez le champ période.

    7. Supprimez la dernière instance de double-cliquer pour insérer un champ, puis cliquez sur OK.

  8. Dans l'Assistant, cliquez sur Suivant.

  9. Dans la page suivante de l'Assistant, cliquez sur le bouton Formule en regard de la zone Nom de la pièce jointe, puis répétez les étapes ci-dessus pour créer la formule concat("Rapport de ventes - ", période), puis cliquez sur Suivant.

  10. Dans la dernière page de l'Assistant, tapez Envoi par courrier électronique dans la zone Entrez le nom de cette connexion de données, puis cliquez sur Terminer.

Ajout de la logique d'envoi du formulaire en fonction de l'état de la connexion de l'ordinateur de l'utilisateur

  1. Dans InfoPath, en mode Création, cliquez sur Options d'envoi dans le menu Outils.

  2. Dans la boîte de dialogue Options d'envoi, cliquez sur Autoriser les utilisateurs à envoyer ce formulaire, sélectionnez Envoi personnalisé à l'aide du code d'un formulaire, cliquez sur Modifier le code.

  3. Ajoutez les deux fonctions suivantes en dessous du gestionnaire d'événements Submit :

    public void OnlineSubmit(SubmitEventArgs e)
    {
       // Logic for submitting online goes here.
    }
    
    public void OfflineSubmit(SubmitEventArgs e)
    {
       // Access and submit to the e-mail connection.
       DataConnectionCollection myDataConnections =
          this.DataConnections;
       EmailSubmitConnection submitConnection =
          (EmailSubmitConnection)myDataConnections["E-mail Submit"];
       submitConnection.Execute();
    
       // Notify the user that the form was submitted offline.
       System.Text.StringBuilder myMessage = 
          new System.Text.StringBuilder();
       myMessage.Append("You submitted your Sales Report offline. ");
       myMessage.Append("Your Sales Report is in your outbox ");
       myMessage.Append("and will be submitted when you connect to ");
       myMessage.Append("the network.");
        MessageBox.Show(myMessage.ToString());
    
       // The submission was successful.
       e.CancelableArgs.Cancel = false;
    }
    
    Public Sub OnlineSubmit(ByVal e As SubmitEventArgs)
       ' Logic for submitting online goes here.
    End Sub
    
    Public Sub OfflineSubmit(ByVal e As SubmitEventArgs)
       ' Access and submit to the e-mail connection.
       Dim myDataConnections As DataConnectionCollection = _
          Me.DataConnections
       Dim submitConnection As EmailSubmitConnection = _
          DirectCast(myDataConnections("E-mail Submit"), _
          EmailSubmitConnection)
       submitConnection.Execute
    
       ' Notify the user that the form was submitted offline.
       Dim myMessage As System.Text.StringBuilder = _
          New System.Text.StringBuilder()
       myMessage.Append("You submitted your Sales Report offline. ")
       myMessage.Append("Your Sales Report is in your outbox ")
       myMessage.Append("and will be submitted when you connect to ")
       myMessage.Append("the network.")
        MessageBox.Show(myMessage.ToString())
    
       ' The submission was successful.
       e.CancelableArgs.Cancel = False
    End Sub
    
  4. Ajoutez l'instruction if suivante à la fonction du gestionnaire d'événements FormEvents_Submit.

    // Check the computer's connection state.
    if (this.Application.MachineOnlineState == MachineState.Online)
    {
       OnlineSubmit(e);
    }
    else
    {
       OfflineSubmit(e);
    }
    
    ' Check the computer's connection state.
    If (Me.Application.MachineOnlineState = MachineState.Online) Then
       OnlineSubmit(e)
    Else
    {
       OfflineSubmit(e)
    End If
    

Test du code

  1. Dans le menu Déboguer, cliquez sur Démarrer le débogage.

  2. Remplissez le formulaire.

  3. Lancez Microsoft Internet Explorer.

  4. Dans Internet Explorer, cliquez sur Travailler hors connexion dans le menu Fichier.

  5. Dans InfoPath, cliquez sur Envoyer. Vous devez voir apparaître un message indiquant que le formulaire va être envoyé en tant que message électronique.

  6. Cliquez sur Envoyer. Vous devez voir apparaître un message indiquant que le formulaire a été soumis hors connexion et qu'il sera envoyé dès que vous vous connecterez au réseau.