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é.

Ajouter une connexion de données qui envoie le formulaire en tant que pièce jointe à un e-mail

  1. Créez un modèle de formulaire InfoPath avec le modèle Vide (éditeur InfoPath).

  2. Dans InfoPath, en mode Création, cliquez sur Connexions de données sous l'onglet Données.

  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 sur Suivant.

  6. Dans la page suivante de l’Assistant, tapez votre adresse e-mail 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 de texte 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 Email Envoyer dans la zone Entrer un nom pour 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 sous l'onglet Données.

  2. Dans la boîte de dialogue Options d'envoi, cliquez sur Autoriser les utilisateurs à envoyer ce formulaire, sélectionnez Effectuer une action personnalisée à l'aide du code, 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 email connection.
       DataConnectionCollection myDataConnections =
           this.DataConnections;
       EmailSubmitConnection submitConnection =
           (EmailSubmitConnection)myDataConnections["Email 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 email connection.
       Dim myDataConnections As DataConnectionCollection = _
           Me.DataConnections
       Dim submitConnection As EmailSubmitConnection = _
           DirectCast(myDataConnections("Email 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 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 un message indiquant que le formulaire sera envoyé sous forme d’e-mail.

  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.

Voir aussi